wip
This commit is contained in:
parent
9d81d06853
commit
5a8cc7851b
200 changed files with 1562 additions and 1533 deletions
|
@ -3,8 +3,8 @@
|
|||
<div class="_section">
|
||||
<div class="mjndxjch _content">
|
||||
<img src="https://xn--931a.moe/assets/error.jpg" class="_ghost"/>
|
||||
<p><Fa :icon="faExclamationTriangle"/> {{ $t('pageLoadError') }}</p>
|
||||
<p>{{ $t('pageLoadErrorDescription') }}</p>
|
||||
<p><Fa :icon="faExclamationTriangle"/> {{ $ts.pageLoadError }}</p>
|
||||
<p>{{ $ts.pageLoadErrorDescription }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</transition>
|
||||
|
@ -22,7 +22,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('error'),
|
||||
title: this.$ts.error,
|
||||
icon: faExclamationTriangle
|
||||
},
|
||||
faExclamationTriangle
|
||||
|
|
|
@ -11,27 +11,27 @@
|
|||
</div>
|
||||
</section>
|
||||
<section class="_formItem" style="text-align: center; padding: 0 16px;" @click="gravity">
|
||||
{{ $t('_aboutMisskey.about') }}
|
||||
{{ $ts._aboutMisskey.about }}
|
||||
</section>
|
||||
<FormGroup>
|
||||
<FormLink to="https://github.com/syuilo/misskey" external>
|
||||
<template #icon><Fa :icon="faCode"/></template>
|
||||
{{ $t('_aboutMisskey.source') }}
|
||||
{{ $ts._aboutMisskey.source }}
|
||||
<template #suffix>GitHub</template>
|
||||
</FormLink>
|
||||
<FormLink to="https://crowdin.com/project/misskey" external>
|
||||
<template #icon><Fa :icon="faLanguage"/></template>
|
||||
{{ $t('_aboutMisskey.translation') }}
|
||||
{{ $ts._aboutMisskey.translation }}
|
||||
<template #suffix>Crowdin</template>
|
||||
</FormLink>
|
||||
<FormLink to="https://www.patreon.com/syuilo" external>
|
||||
<template #icon><Fa :icon="faHandHoldingMedical"/></template>
|
||||
{{ $t('_aboutMisskey.donate') }}
|
||||
{{ $ts._aboutMisskey.donate }}
|
||||
<template #suffix>Patreon</template>
|
||||
</FormLink>
|
||||
</FormGroup>
|
||||
<FormGroup>
|
||||
<template #label>{{ $t('_aboutMisskey.contributors') }}</template>
|
||||
<template #label>{{ $ts._aboutMisskey.contributors }}</template>
|
||||
<FormLink to="https://github.com/syuilo" external>@syuilo</FormLink>
|
||||
<FormLink to="https://github.com/AyaMorisawa" external>@AyaMorisawa</FormLink>
|
||||
<FormLink to="https://github.com/mei23" external>@mei23</FormLink>
|
||||
|
@ -40,12 +40,12 @@
|
|||
<FormLink to="https://github.com/rinsuki" external>@rinsuki</FormLink>
|
||||
<FormLink to="https://github.com/Xeltica" external>@Xeltica</FormLink>
|
||||
<FormLink to="https://github.com/u1-liquid" external>@u1-liquid</FormLink>
|
||||
<template #caption><MkLink url="https://github.com/syuilo/misskey/graphs/contributors">{{ $t('_aboutMisskey.allContributors') }}</MkLink></template>
|
||||
<template #caption><MkLink url="https://github.com/syuilo/misskey/graphs/contributors">{{ $ts._aboutMisskey.allContributors }}</MkLink></template>
|
||||
</FormGroup>
|
||||
<FormGroup>
|
||||
<template #label><Mfm text="[jelly ❤]"/> {{ $t('_aboutMisskey.patrons') }}</template>
|
||||
<template #label><Mfm text="[jelly ❤]"/> {{ $ts._aboutMisskey.patrons }}</template>
|
||||
<FormKeyValueView v-for="patron in patrons" :key="patron"><template #key>{{ patron }}</template></FormKeyValueView>
|
||||
<template #caption>{{ $t('_aboutMisskey.morePatrons') }}</template>
|
||||
<template #caption>{{ $ts._aboutMisskey.morePatrons }}</template>
|
||||
</FormGroup>
|
||||
</FormBase>
|
||||
</div>
|
||||
|
@ -115,7 +115,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('aboutMisskey'),
|
||||
title: this.$ts.aboutMisskey,
|
||||
icon: null
|
||||
},
|
||||
version,
|
||||
|
|
|
@ -13,16 +13,16 @@
|
|||
|
||||
<FormGroup>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('administrator') }}</template>
|
||||
<template #key>{{ $ts.administrator }}</template>
|
||||
<template #value>{{ meta.maintainerName }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('contact') }}</template>
|
||||
<template #key>{{ $ts.contact }}</template>
|
||||
<template #value>{{ meta.maintainerEmail }}</template>
|
||||
</FormKeyValueView>
|
||||
</FormGroup>
|
||||
|
||||
<FormLink v-if="meta.tosUrl" :to="meta.tosUrl" external>{{ $t('tos') }}</FormLink>
|
||||
<FormLink v-if="meta.tosUrl" :to="meta.tosUrl" external>{{ $ts.tos }}</FormLink>
|
||||
</FormBase>
|
||||
</template>
|
||||
|
||||
|
@ -47,7 +47,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('instanceInfo'),
|
||||
title: this.$ts.instanceInfo,
|
||||
icon: faInfoCircle
|
||||
},
|
||||
version,
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<img v-if="announcement.imageUrl" :src="announcement.imageUrl"/>
|
||||
</div>
|
||||
<div class="_footer" v-if="$i && !announcement.isRead">
|
||||
<MkButton @click="read(items, announcement, i)" primary><Fa :icon="faCheck"/> {{ $t('gotIt') }}</MkButton>
|
||||
<MkButton @click="read(items, announcement, i)" primary><Fa :icon="faCheck"/> {{ $ts.gotIt }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
</MkPagination>
|
||||
|
@ -31,7 +31,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('announcements'),
|
||||
title: this.$ts.announcements,
|
||||
icon: faBroadcastTower
|
||||
},
|
||||
pagination: {
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
<p class="description">{{ app.description }}</p>
|
||||
</div>
|
||||
<div class="_content">
|
||||
<h2>{{ $t('_auth.permissionAsk') }}</h2>
|
||||
<h2>{{ $ts._auth.permissionAsk }}</h2>
|
||||
<ul>
|
||||
<li v-for="p in app.permission" :key="p">{{ $t(`_permissions.${p}`) }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="_footer">
|
||||
<MkButton @click="cancel" inline>{{ $t('cancel') }}</MkButton>
|
||||
<MkButton @click="accept" inline primary>{{ $t('accept') }}</MkButton>
|
||||
<MkButton @click="cancel" inline>{{ $ts.cancel }}</MkButton>
|
||||
<MkButton @click="accept" inline primary>{{ $ts.accept }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
|
|
@ -12,15 +12,15 @@
|
|||
@accepted="accepted"
|
||||
/>
|
||||
<div class="denied" v-if="state == 'denied'">
|
||||
<h1>{{ $t('_auth.denied') }}</h1>
|
||||
<h1>{{ $ts._auth.denied }}</h1>
|
||||
</div>
|
||||
<div class="accepted" v-if="state == 'accepted'">
|
||||
<h1>{{ session.app.isAuthorized ? this.$t('already-authorized') : this.$t('allowed') }}</h1>
|
||||
<p v-if="session.app.callbackUrl">{{ $t('_auth.callback') }}<MkEllipsis/></p>
|
||||
<p v-if="!session.app.callbackUrl">{{ $t('_auth.pleaseGoBack') }}</p>
|
||||
<h1>{{ session.app.isAuthorized ? this.$t('already-authorized') : this.$ts.allowed }}</h1>
|
||||
<p v-if="session.app.callbackUrl">{{ $ts._auth.callback }}<MkEllipsis/></p>
|
||||
<p v-if="!session.app.callbackUrl">{{ $ts._auth.pleaseGoBack }}</p>
|
||||
</div>
|
||||
<div class="error" v-if="state == 'fetch-session-error'">
|
||||
<p>{{ $t('somethingHappened') }}</p>
|
||||
<p>{{ $ts.somethingHappened }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="signin" v-else>
|
||||
|
|
|
@ -2,20 +2,20 @@
|
|||
<div>
|
||||
<div class="_section">
|
||||
<div class="_content">
|
||||
<MkInput v-model:value="name">{{ $t('name') }}</MkInput>
|
||||
<MkInput v-model:value="name">{{ $ts.name }}</MkInput>
|
||||
|
||||
<MkTextarea v-model:value="description">{{ $t('description') }}</MkTextarea>
|
||||
<MkTextarea v-model:value="description">{{ $ts.description }}</MkTextarea>
|
||||
|
||||
<div class="banner">
|
||||
<MkButton v-if="bannerId == null" @click="setBannerImage"><Fa :icon="faPlus"/> {{ $t('_channel.setBanner') }}</MkButton>
|
||||
<MkButton v-if="bannerId == null" @click="setBannerImage"><Fa :icon="faPlus"/> {{ $ts._channel.setBanner }}</MkButton>
|
||||
<div v-else-if="bannerUrl">
|
||||
<img :src="bannerUrl" style="width: 100%;"/>
|
||||
<MkButton @click="removeBannerImage()"><Fa :icon="faTrashAlt"/> {{ $t('_channel.removeBanner') }}</MkButton>
|
||||
<MkButton @click="removeBannerImage()"><Fa :icon="faTrashAlt"/> {{ $ts._channel.removeBanner }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="_footer">
|
||||
<MkButton @click="save()" primary><Fa :icon="faSave"/> {{ channelId ? $t('save') : $t('create') }}</MkButton>
|
||||
<MkButton @click="save()" primary><Fa :icon="faSave"/> {{ channelId ? $ts.save : $ts.create }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -46,10 +46,10 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: computed(() => this.channelId ? {
|
||||
title: this.$t('_channel.edit'),
|
||||
title: this.$ts._channel.edit,
|
||||
icon: faSatelliteDish,
|
||||
} : {
|
||||
title: this.$t('_channel.create'),
|
||||
title: this.$ts._channel.create,
|
||||
icon: faSatelliteDish,
|
||||
}),
|
||||
channel: null,
|
||||
|
|
|
@ -10,8 +10,8 @@
|
|||
</div>
|
||||
<div :style="{ backgroundImage: channel.bannerUrl ? `url(${channel.bannerUrl})` : null }" class="banner">
|
||||
<div class="status">
|
||||
<div><Fa :icon="faUsers" fixed-width/><I18n src="_channel.usersCount" tag="span" style="margin-left: 4px;"><template #n><b>{{ channel.usersCount }}</b></template></I18n></div>
|
||||
<div><Fa :icon="faPencilAlt" fixed-width/><I18n src="_channel.notesCount" tag="span" style="margin-left: 4px;"><template #n><b>{{ channel.notesCount }}</b></template></I18n></div>
|
||||
<div><Fa :icon="faUsers" fixed-width/><I18n :src="$ts._channel.usersCount" tag="span" style="margin-left: 4px;"><template #n><b>{{ channel.usersCount }}</b></template></I18n></div>
|
||||
<div><Fa :icon="faPencilAlt" fixed-width/><I18n :src="$ts._channel.notesCount" tag="span" style="margin-left: 4px;"><template #n><b>{{ channel.notesCount }}</b></template></I18n></div>
|
||||
</div>
|
||||
<div class="fade"></div>
|
||||
</div>
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
<div>
|
||||
<div class="_section" style="padding: 0;" v-if="$i">
|
||||
<MkTab class="_content" v-model:value="tab">
|
||||
<option value="featured"><Fa :icon="faFireAlt"/> {{ $t('_channel.featured') }}</option>
|
||||
<option value="following"><Fa :icon="faHeart"/> {{ $t('_channel.following') }}</option>
|
||||
<option value="owned"><Fa :icon="faEdit"/> {{ $t('_channel.owned') }}</option>
|
||||
<option value="featured"><Fa :icon="faFireAlt"/> {{ $ts._channel.featured }}</option>
|
||||
<option value="following"><Fa :icon="faHeart"/> {{ $ts._channel.following }}</option>
|
||||
<option value="owned"><Fa :icon="faEdit"/> {{ $ts._channel.owned }}</option>
|
||||
</MkTab>
|
||||
</div>
|
||||
|
||||
|
@ -47,7 +47,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('channel'),
|
||||
title: this.$ts.channel,
|
||||
icon: faSatelliteDish,
|
||||
action: {
|
||||
icon: faPlus,
|
||||
|
|
|
@ -81,24 +81,24 @@ export default defineComponent({
|
|||
menu(ev) {
|
||||
os.modalMenu([this.isOwned ? {
|
||||
icon: faPencilAlt,
|
||||
text: this.$t('edit'),
|
||||
text: this.$ts.edit,
|
||||
action: async () => {
|
||||
const { canceled, result } = await os.form(this.clip.name, {
|
||||
name: {
|
||||
type: 'string',
|
||||
label: this.$t('name'),
|
||||
label: this.$ts.name,
|
||||
default: this.clip.name
|
||||
},
|
||||
description: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
multiline: true,
|
||||
label: this.$t('description'),
|
||||
label: this.$ts.description,
|
||||
default: this.clip.description
|
||||
},
|
||||
isPublic: {
|
||||
type: 'boolean',
|
||||
label: this.$t('public'),
|
||||
label: this.$ts.public,
|
||||
default: this.clip.isPublic
|
||||
}
|
||||
});
|
||||
|
@ -111,7 +111,7 @@ export default defineComponent({
|
|||
}
|
||||
} : undefined, this.isOwned ? {
|
||||
icon: faTrashAlt,
|
||||
text: this.$t('delete'),
|
||||
text: this.$ts.delete,
|
||||
danger: true,
|
||||
action: async () => {
|
||||
const { canceled } = await os.dialog({
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<div v-html="body" class="qyqbqfal"></div>
|
||||
</div>
|
||||
<div class="_footer">
|
||||
<MkLink :url="`https://github.com/syuilo/misskey/blob/master/src/docs/${doc}.ja-JP.md`" class="at">{{ $t('docSource') }}</MkLink>
|
||||
<MkLink :url="`https://github.com/syuilo/misskey/blob/master/src/docs/${doc}.ja-JP.md`" class="at">{{ $ts.docSource }}</MkLink>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
|
|
|
@ -21,7 +21,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('help'),
|
||||
title: this.$ts.help,
|
||||
icon: faQuestionCircle
|
||||
},
|
||||
docs: [],
|
||||
|
|
|
@ -18,7 +18,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: computed(() => this.folder ? this.folder.name : this.$t('drive')),
|
||||
title: computed(() => this.folder ? this.folder.name : this.$ts.drive),
|
||||
icon: faCloud,
|
||||
action: {
|
||||
icon: faEllipsisH,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div class="lznhrdub">
|
||||
<div class="_section">
|
||||
<MkInput v-model:value="query" :debounce="true" type="search"><template #icon><Fa :icon="faSearch"/></template><span>{{ $t('searchUser') }}</span></MkInput>
|
||||
<MkInput v-model:value="query" :debounce="true" type="search"><template #icon><Fa :icon="faSearch"/></template><span>{{ $ts.searchUser }}</span></MkInput>
|
||||
|
||||
<XUserList v-if="query" class="_vMargin" :pagination="searchPagination" ref="search"/>
|
||||
|
||||
|
@ -12,30 +12,30 @@
|
|||
|
||||
<template v-if="tag == null">
|
||||
<MkFolder class="_vMargin" persist-key="explore-pinned-users">
|
||||
<template #header><Fa :icon="faBookmark" fixed-width style="margin-right: 0.5em;"/>{{ $t('pinnedUsers') }}</template>
|
||||
<template #header><Fa :icon="faBookmark" fixed-width style="margin-right: 0.5em;"/>{{ $ts.pinnedUsers }}</template>
|
||||
<XUserList :pagination="pinnedUsers"/>
|
||||
</MkFolder>
|
||||
<MkFolder class="_vMargin" persist-key="explore-popular-users">
|
||||
<template #header><Fa :icon="faChartLine" fixed-width style="margin-right: 0.5em;"/>{{ $t('popularUsers') }}</template>
|
||||
<template #header><Fa :icon="faChartLine" fixed-width style="margin-right: 0.5em;"/>{{ $ts.popularUsers }}</template>
|
||||
<XUserList :pagination="popularUsers"/>
|
||||
</MkFolder>
|
||||
<MkFolder class="_vMargin" persist-key="explore-recently-updated-users">
|
||||
<template #header><Fa :icon="faCommentAlt" fixed-width style="margin-right: 0.5em;"/>{{ $t('recentlyUpdatedUsers') }}</template>
|
||||
<template #header><Fa :icon="faCommentAlt" fixed-width style="margin-right: 0.5em;"/>{{ $ts.recentlyUpdatedUsers }}</template>
|
||||
<XUserList :pagination="recentlyUpdatedUsers"/>
|
||||
</MkFolder>
|
||||
<MkFolder class="_vMargin" persist-key="explore-recently-registered-users">
|
||||
<template #header><Fa :icon="faPlus" fixed-width style="margin-right: 0.5em;"/>{{ $t('recentlyRegisteredUsers') }}</template>
|
||||
<template #header><Fa :icon="faPlus" fixed-width style="margin-right: 0.5em;"/>{{ $ts.recentlyRegisteredUsers }}</template>
|
||||
<XUserList :pagination="recentlyRegisteredUsers"/>
|
||||
</MkFolder>
|
||||
</template>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="localfedi7 _panel _vMargin" v-if="tag == null" :style="{ backgroundImage: `url(/assets/fedi.jpg)` }">
|
||||
<header><span>{{ $t('exploreFediverse') }}</span></header>
|
||||
<header><span>{{ $ts.exploreFediverse }}</span></header>
|
||||
</div>
|
||||
|
||||
<MkFolder :body-togglable="true" :expanded="false" ref="tags" class="_vMargin">
|
||||
<template #header><Fa :icon="faHashtag" fixed-width style="margin-right: 0.5em;"/>{{ $t('popularTags') }}</template>
|
||||
<template #header><Fa :icon="faHashtag" fixed-width style="margin-right: 0.5em;"/>{{ $ts.popularTags }}</template>
|
||||
|
||||
<div class="vxjfqztj">
|
||||
<MkA v-for="tag in tagsLocal" :to="`/explore/tags/${tag.tag}`" :key="'local:' + tag.tag" class="local">{{ tag.tag }}</MkA>
|
||||
|
@ -50,15 +50,15 @@
|
|||
|
||||
<template v-if="tag == null">
|
||||
<MkFolder class="_vMargin">
|
||||
<template #header><Fa :icon="faChartLine" fixed-width style="margin-right: 0.5em;"/>{{ $t('popularUsers') }}</template>
|
||||
<template #header><Fa :icon="faChartLine" fixed-width style="margin-right: 0.5em;"/>{{ $ts.popularUsers }}</template>
|
||||
<XUserList :pagination="popularUsersF"/>
|
||||
</MkFolder>
|
||||
<MkFolder class="_vMargin">
|
||||
<template #header><Fa :icon="faCommentAlt" fixed-width style="margin-right: 0.5em;"/>{{ $t('recentlyUpdatedUsers') }}</template>
|
||||
<template #header><Fa :icon="faCommentAlt" fixed-width style="margin-right: 0.5em;"/>{{ $ts.recentlyUpdatedUsers }}</template>
|
||||
<XUserList :pagination="recentlyUpdatedUsersF"/>
|
||||
</MkFolder>
|
||||
<MkFolder class="_vMargin">
|
||||
<template #header><Fa :icon="faRocket" fixed-width style="margin-right: 0.5em;"/>{{ $t('recentlyDiscoveredUsers') }}</template>
|
||||
<template #header><Fa :icon="faRocket" fixed-width style="margin-right: 0.5em;"/>{{ $ts.recentlyDiscoveredUsers }}</template>
|
||||
<XUserList :pagination="recentlyRegisteredUsersF"/>
|
||||
</MkFolder>
|
||||
</template>
|
||||
|
@ -93,7 +93,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('explore'),
|
||||
title: this.$ts.explore,
|
||||
icon: faHashtag
|
||||
},
|
||||
pinnedUsers: { endpoint: 'pinned-users' },
|
||||
|
|
|
@ -19,7 +19,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('favorites'),
|
||||
title: this.$ts.favorites,
|
||||
icon: faStar
|
||||
},
|
||||
pagination: {
|
||||
|
|
|
@ -18,7 +18,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('featured'),
|
||||
title: this.$ts.featured,
|
||||
icon: faFireAlt
|
||||
},
|
||||
pagination: {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<template #empty>
|
||||
<div class="_fullinfo">
|
||||
<img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/>
|
||||
<div>{{ $t('noFollowRequests') }}</div>
|
||||
<div>{{ $ts.noFollowRequests }}</div>
|
||||
</div>
|
||||
</template>
|
||||
<template #default="{items}">
|
||||
|
@ -44,7 +44,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('followRequests'),
|
||||
title: this.$ts.followRequests,
|
||||
icon: faUserClock,
|
||||
},
|
||||
pagination: {
|
||||
|
|
|
@ -40,7 +40,7 @@ export default defineComponent({
|
|||
});
|
||||
}
|
||||
|
||||
os.promiseDialog(promise, null, null, this.$t('fetchingAsApObject'));
|
||||
os.promiseDialog(promise, null, null, this.$ts.fetchingAsApObject);
|
||||
},
|
||||
|
||||
methods: {
|
||||
|
|
|
@ -4,31 +4,31 @@
|
|||
<div class="_content">
|
||||
<div class="inputs" style="display: flex;">
|
||||
<MkSelect v-model:value="state" style="margin: 0; flex: 1;">
|
||||
<template #label>{{ $t('state') }}</template>
|
||||
<option value="all">{{ $t('all') }}</option>
|
||||
<option value="unresolved">{{ $t('unresolved') }}</option>
|
||||
<option value="resolved">{{ $t('resolved') }}</option>
|
||||
<template #label>{{ $ts.state }}</template>
|
||||
<option value="all">{{ $ts.all }}</option>
|
||||
<option value="unresolved">{{ $ts.unresolved }}</option>
|
||||
<option value="resolved">{{ $ts.resolved }}</option>
|
||||
</MkSelect>
|
||||
<MkSelect v-model:value="targetUserOrigin" style="margin: 0; flex: 1;">
|
||||
<template #label>{{ $t('targetUserOrigin') }}</template>
|
||||
<option value="combined">{{ $t('all') }}</option>
|
||||
<option value="local">{{ $t('local') }}</option>
|
||||
<option value="remote">{{ $t('remote') }}</option>
|
||||
<template #label>{{ $ts.targetUserOrigin }}</template>
|
||||
<option value="combined">{{ $ts.all }}</option>
|
||||
<option value="local">{{ $ts.local }}</option>
|
||||
<option value="remote">{{ $ts.remote }}</option>
|
||||
</MkSelect>
|
||||
<MkSelect v-model:value="reporterOrigin" style="margin: 0; flex: 1;">
|
||||
<template #label>{{ $t('reporterOrigin') }}</template>
|
||||
<option value="combined">{{ $t('all') }}</option>
|
||||
<option value="local">{{ $t('local') }}</option>
|
||||
<option value="remote">{{ $t('remote') }}</option>
|
||||
<template #label>{{ $ts.reporterOrigin }}</template>
|
||||
<option value="combined">{{ $ts.all }}</option>
|
||||
<option value="local">{{ $ts.local }}</option>
|
||||
<option value="remote">{{ $ts.remote }}</option>
|
||||
</MkSelect>
|
||||
</div>
|
||||
<!-- TODO
|
||||
<div class="inputs" style="display: flex; padding-top: 1.2em;">
|
||||
<MkInput v-model:value="searchUsername" style="margin: 0; flex: 1;" type="text" spellcheck="false" @update:value="$refs.reports.reload()">
|
||||
<span>{{ $t('username') }}</span>
|
||||
<span>{{ $ts.username }}</span>
|
||||
</MkInput>
|
||||
<MkInput v-model:value="searchHost" style="margin: 0; flex: 1;" type="text" spellcheck="false" @update:value="$refs.reports.reload()" :disabled="pagination.params().origin === 'local'">
|
||||
<span>{{ $t('host') }}</span>
|
||||
<span>{{ $ts.host }}</span>
|
||||
</MkInput>
|
||||
</div>
|
||||
-->
|
||||
|
@ -52,7 +52,7 @@
|
|||
</div>
|
||||
<div class="_footer">
|
||||
<div v-if="report.assignee">Assignee: <MkAcct :user="report.assignee"/></div>
|
||||
<MkButton @click="resolve(report)" primary v-if="!report.resolved">{{ $t('abuseMarkAsResolved') }}</MkButton>
|
||||
<MkButton @click="resolve(report)" primary v-if="!report.resolved">{{ $ts.abuseMarkAsResolved }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
</MkPagination>
|
||||
|
@ -84,7 +84,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('abuseReports'),
|
||||
title: this.$ts.abuseReports,
|
||||
icon: faExclamationCircle
|
||||
},
|
||||
searchUsername: '',
|
||||
|
|
|
@ -2,22 +2,22 @@
|
|||
<div class="ztgjmzrw">
|
||||
<div class="_section">
|
||||
<div class="_content">
|
||||
<MkButton @click="add()" primary style="margin: 0 auto 16px auto;"><Fa :icon="faPlus"/> {{ $t('add') }}</MkButton>
|
||||
<MkButton @click="add()" primary style="margin: 0 auto 16px auto;"><Fa :icon="faPlus"/> {{ $ts.add }}</MkButton>
|
||||
<section class="_card _vMargin announcements" v-for="announcement in announcements">
|
||||
<div class="_content announcement">
|
||||
<MkInput v-model:value="announcement.title">
|
||||
<span>{{ $t('title') }}</span>
|
||||
<span>{{ $ts.title }}</span>
|
||||
</MkInput>
|
||||
<MkTextarea v-model:value="announcement.text">
|
||||
<span>{{ $t('text') }}</span>
|
||||
<span>{{ $ts.text }}</span>
|
||||
</MkTextarea>
|
||||
<MkInput v-model:value="announcement.imageUrl">
|
||||
<span>{{ $t('imageUrl') }}</span>
|
||||
<span>{{ $ts.imageUrl }}</span>
|
||||
</MkInput>
|
||||
<p v-if="announcement.reads">{{ $t('nUsersRead', { n: announcement.reads }) }}</p>
|
||||
<div class="buttons">
|
||||
<MkButton class="button" inline @click="save(announcement)" primary><Fa :icon="faSave"/> {{ $t('save') }}</MkButton>
|
||||
<MkButton class="button" inline @click="remove(announcement)"><Fa :icon="faTrashAlt"/> {{ $t('remove') }}</MkButton>
|
||||
<MkButton class="button" inline @click="save(announcement)" primary><Fa :icon="faSave"/> {{ $ts.save }}</MkButton>
|
||||
<MkButton class="button" inline @click="remove(announcement)"><Fa :icon="faTrashAlt"/> {{ $ts.remove }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
@ -45,7 +45,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('announcements'),
|
||||
title: this.$ts.announcements,
|
||||
icon: faBroadcastTower
|
||||
},
|
||||
announcements: [],
|
||||
|
@ -86,7 +86,7 @@ export default defineComponent({
|
|||
os.api('admin/announcements/create', announcement).then(() => {
|
||||
os.dialog({
|
||||
type: 'success',
|
||||
text: this.$t('saved')
|
||||
text: this.$ts.saved
|
||||
});
|
||||
}).catch(e => {
|
||||
os.dialog({
|
||||
|
@ -98,7 +98,7 @@ export default defineComponent({
|
|||
os.api('admin/announcements/update', announcement).then(() => {
|
||||
os.dialog({
|
||||
type: 'success',
|
||||
text: this.$t('saved')
|
||||
text: this.$ts.saved
|
||||
});
|
||||
}).catch(e => {
|
||||
os.dialog({
|
||||
|
|
|
@ -10,13 +10,13 @@
|
|||
|
||||
<div class="yigymqpb _section">
|
||||
<img :src="emoji.url" class="img"/>
|
||||
<MkInput v-model:value="name"><span>{{ $t('name') }}</span></MkInput>
|
||||
<MkInput v-model:value="category" :datalist="categories"><span>{{ $t('category') }}</span></MkInput>
|
||||
<MkInput v-model:value="name"><span>{{ $ts.name }}</span></MkInput>
|
||||
<MkInput v-model:value="category" :datalist="categories"><span>{{ $ts.category }}</span></MkInput>
|
||||
<MkInput v-model:value="aliases">
|
||||
<span>{{ $t('tags') }}</span>
|
||||
<template #desc>{{ $t('setMultipleBySeparatingWithSpace') }}</template>
|
||||
<span>{{ $ts.tags }}</span>
|
||||
<template #desc>{{ $ts.setMultipleBySeparatingWithSpace }}</template>
|
||||
</MkInput>
|
||||
<MkButton danger @click="del()"><Fa :icon="faTrashAlt"/> {{ $t('delete') }}</MkButton>
|
||||
<MkButton danger @click="del()"><Fa :icon="faTrashAlt"/> {{ $ts.delete }}</MkButton>
|
||||
</div>
|
||||
</XModalWindow>
|
||||
</template>
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
<div class="mk-instance-emojis">
|
||||
<div class="_section" style="padding: 0;">
|
||||
<MkTab v-model:value="tab">
|
||||
<option value="local">{{ $t('local') }}</option>
|
||||
<option value="remote">{{ $t('remote') }}</option>
|
||||
<option value="local">{{ $ts.local }}</option>
|
||||
<option value="remote">{{ $ts.remote }}</option>
|
||||
</MkTab>
|
||||
</div>
|
||||
|
||||
<div class="_section">
|
||||
<div class="local" v-if="tab === 'local'">
|
||||
<MkButton primary @click="add" style="margin: 0 auto var(--margin) auto;"><Fa :icon="faPlus"/> {{ $t('addEmoji') }}</MkButton>
|
||||
<MkInput v-model:value="query" :debounce="true" type="search"><template #icon><Fa :icon="faSearch"/></template><span>{{ $t('search') }}</span></MkInput>
|
||||
<MkButton primary @click="add" style="margin: 0 auto var(--margin) auto;"><Fa :icon="faPlus"/> {{ $ts.addEmoji }}</MkButton>
|
||||
<MkInput v-model:value="query" :debounce="true" type="search"><template #icon><Fa :icon="faSearch"/></template><span>{{ $ts.search }}</span></MkInput>
|
||||
<MkPagination :pagination="pagination" ref="emojis">
|
||||
<template #empty><span>{{ $t('noCustomEmojis') }}</span></template>
|
||||
<template #empty><span>{{ $ts.noCustomEmojis }}</span></template>
|
||||
<template #default="{items}">
|
||||
<div class="emojis">
|
||||
<button class="emoji _panel _button" v-for="emoji in items" :key="emoji.id" @click="edit(emoji)">
|
||||
|
@ -28,10 +28,10 @@
|
|||
</div>
|
||||
|
||||
<div class="remote" v-else-if="tab === 'remote'">
|
||||
<MkInput v-model:value="queryRemote" :debounce="true" type="search"><template #icon><Fa :icon="faSearch"/></template><span>{{ $t('search') }}</span></MkInput>
|
||||
<MkInput v-model:value="host" :debounce="true"><span>{{ $t('host') }}</span></MkInput>
|
||||
<MkInput v-model:value="queryRemote" :debounce="true" type="search"><template #icon><Fa :icon="faSearch"/></template><span>{{ $ts.search }}</span></MkInput>
|
||||
<MkInput v-model:value="host" :debounce="true"><span>{{ $ts.host }}</span></MkInput>
|
||||
<MkPagination :pagination="remotePagination" ref="remoteEmojis">
|
||||
<template #empty><span>{{ $t('noCustomEmojis') }}</span></template>
|
||||
<template #empty><span>{{ $ts.noCustomEmojis }}</span></template>
|
||||
<template #default="{items}">
|
||||
<div class="emojis">
|
||||
<div class="emoji _panel _button" v-for="emoji in items" :key="emoji.id" @click="remoteMenu(emoji, $event)">
|
||||
|
@ -71,7 +71,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('customEmojis'),
|
||||
title: this.$ts.customEmojis,
|
||||
icon: faLaugh,
|
||||
action: {
|
||||
icon: faPlus,
|
||||
|
@ -142,7 +142,7 @@ export default defineComponent({
|
|||
type: 'label',
|
||||
text: ':' + emoji.name + ':',
|
||||
}, {
|
||||
text: this.$t('import'),
|
||||
text: this.$ts.import,
|
||||
icon: faPlus,
|
||||
action: () => { this.im(emoji) }
|
||||
}], ev.currentTarget || ev.target);
|
||||
|
|
|
@ -2,38 +2,38 @@
|
|||
<div>
|
||||
<div class="_section">
|
||||
<div class="_content">
|
||||
<MkInput v-model:value="host" :debounce="true"><span>{{ $t('host') }}</span></MkInput>
|
||||
<MkInput v-model:value="host" :debounce="true"><span>{{ $ts.host }}</span></MkInput>
|
||||
<div class="inputs" style="display: flex;">
|
||||
<MkSelect v-model:value="state" style="margin: 0; flex: 1;">
|
||||
<template #label>{{ $t('state') }}</template>
|
||||
<option value="all">{{ $t('all') }}</option>
|
||||
<option value="federating">{{ $t('federating') }}</option>
|
||||
<option value="subscribing">{{ $t('subscribing') }}</option>
|
||||
<option value="publishing">{{ $t('publishing') }}</option>
|
||||
<option value="suspended">{{ $t('suspended') }}</option>
|
||||
<option value="blocked">{{ $t('blocked') }}</option>
|
||||
<option value="notResponding">{{ $t('notResponding') }}</option>
|
||||
<template #label>{{ $ts.state }}</template>
|
||||
<option value="all">{{ $ts.all }}</option>
|
||||
<option value="federating">{{ $ts.federating }}</option>
|
||||
<option value="subscribing">{{ $ts.subscribing }}</option>
|
||||
<option value="publishing">{{ $ts.publishing }}</option>
|
||||
<option value="suspended">{{ $ts.suspended }}</option>
|
||||
<option value="blocked">{{ $ts.blocked }}</option>
|
||||
<option value="notResponding">{{ $ts.notResponding }}</option>
|
||||
</MkSelect>
|
||||
<MkSelect v-model:value="sort" style="margin: 0; flex: 1;">
|
||||
<template #label>{{ $t('sort') }}</template>
|
||||
<option value="+pubSub">{{ $t('pubSub') }} ({{ $t('descendingOrder') }})</option>
|
||||
<option value="-pubSub">{{ $t('pubSub') }} ({{ $t('ascendingOrder') }})</option>
|
||||
<option value="+notes">{{ $t('notes') }} ({{ $t('descendingOrder') }})</option>
|
||||
<option value="-notes">{{ $t('notes') }} ({{ $t('ascendingOrder') }})</option>
|
||||
<option value="+users">{{ $t('users') }} ({{ $t('descendingOrder') }})</option>
|
||||
<option value="-users">{{ $t('users') }} ({{ $t('ascendingOrder') }})</option>
|
||||
<option value="+following">{{ $t('following') }} ({{ $t('descendingOrder') }})</option>
|
||||
<option value="-following">{{ $t('following') }} ({{ $t('ascendingOrder') }})</option>
|
||||
<option value="+followers">{{ $t('followers') }} ({{ $t('descendingOrder') }})</option>
|
||||
<option value="-followers">{{ $t('followers') }} ({{ $t('ascendingOrder') }})</option>
|
||||
<option value="+caughtAt">{{ $t('caughtAt') }} ({{ $t('descendingOrder') }})</option>
|
||||
<option value="-caughtAt">{{ $t('caughtAt') }} ({{ $t('ascendingOrder') }})</option>
|
||||
<option value="+lastCommunicatedAt">{{ $t('lastCommunicatedAt') }} ({{ $t('descendingOrder') }})</option>
|
||||
<option value="-lastCommunicatedAt">{{ $t('lastCommunicatedAt') }} ({{ $t('ascendingOrder') }})</option>
|
||||
<option value="+driveUsage">{{ $t('driveUsage') }} ({{ $t('descendingOrder') }})</option>
|
||||
<option value="-driveUsage">{{ $t('driveUsage') }} ({{ $t('ascendingOrder') }})</option>
|
||||
<option value="+driveFiles">{{ $t('driveFiles') }} ({{ $t('descendingOrder') }})</option>
|
||||
<option value="-driveFiles">{{ $t('driveFiles') }} ({{ $t('ascendingOrder') }})</option>
|
||||
<template #label>{{ $ts.sort }}</template>
|
||||
<option value="+pubSub">{{ $ts.pubSub }} ({{ $ts.descendingOrder }})</option>
|
||||
<option value="-pubSub">{{ $ts.pubSub }} ({{ $ts.ascendingOrder }})</option>
|
||||
<option value="+notes">{{ $ts.notes }} ({{ $ts.descendingOrder }})</option>
|
||||
<option value="-notes">{{ $ts.notes }} ({{ $ts.ascendingOrder }})</option>
|
||||
<option value="+users">{{ $ts.users }} ({{ $ts.descendingOrder }})</option>
|
||||
<option value="-users">{{ $ts.users }} ({{ $ts.ascendingOrder }})</option>
|
||||
<option value="+following">{{ $ts.following }} ({{ $ts.descendingOrder }})</option>
|
||||
<option value="-following">{{ $ts.following }} ({{ $ts.ascendingOrder }})</option>
|
||||
<option value="+followers">{{ $ts.followers }} ({{ $ts.descendingOrder }})</option>
|
||||
<option value="-followers">{{ $ts.followers }} ({{ $ts.ascendingOrder }})</option>
|
||||
<option value="+caughtAt">{{ $ts.caughtAt }} ({{ $ts.descendingOrder }})</option>
|
||||
<option value="-caughtAt">{{ $ts.caughtAt }} ({{ $ts.ascendingOrder }})</option>
|
||||
<option value="+lastCommunicatedAt">{{ $ts.lastCommunicatedAt }} ({{ $ts.descendingOrder }})</option>
|
||||
<option value="-lastCommunicatedAt">{{ $ts.lastCommunicatedAt }} ({{ $ts.ascendingOrder }})</option>
|
||||
<option value="+driveUsage">{{ $ts.driveUsage }} ({{ $ts.descendingOrder }})</option>
|
||||
<option value="-driveUsage">{{ $ts.driveUsage }} ({{ $ts.ascendingOrder }})</option>
|
||||
<option value="+driveFiles">{{ $ts.driveFiles }} ({{ $ts.descendingOrder }})</option>
|
||||
<option value="-driveFiles">{{ $ts.driveFiles }} ({{ $ts.ascendingOrder }})</option>
|
||||
</MkSelect>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -79,7 +79,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('federation'),
|
||||
title: this.$ts.federation,
|
||||
icon: faGlobe
|
||||
},
|
||||
host: '',
|
||||
|
|
|
@ -21,8 +21,8 @@
|
|||
</div>
|
||||
<div class="_section">
|
||||
<div class="_content">
|
||||
<MkButton full @click="showUser"><Fa :icon="faExternalLinkSquareAlt"/> {{ $t('user') }}</MkButton>
|
||||
<MkButton full danger @click="del"><Fa :icon="faTrashAlt"/> {{ $t('delete') }}</MkButton>
|
||||
<MkButton full @click="showUser"><Fa :icon="faExternalLinkSquareAlt"/> {{ $ts.user }}</MkButton>
|
||||
<MkButton full danger @click="del"><Fa :icon="faTrashAlt"/> {{ $ts.delete }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
<div class="_section" v-if="info">
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
<div class="xrmjdkdw">
|
||||
<div class="_section">
|
||||
<div class="_content">
|
||||
<MkButton primary @click="clear()"><Fa :icon="faTrashAlt"/> {{ $t('clearCachedFiles') }}</MkButton>
|
||||
<MkButton primary @click="clear()"><Fa :icon="faTrashAlt"/> {{ $ts.clearCachedFiles }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="_section lookup">
|
||||
<div class="_title"><Fa :icon="faSearch"/> {{ $t('lookup') }}</div>
|
||||
<div class="_title"><Fa :icon="faSearch"/> {{ $ts.lookup }}</div>
|
||||
<div class="_content">
|
||||
<MkInput class="target" v-model:value="q" type="text" @enter="find()">
|
||||
<span>{{ $t('fileIdOrUrl') }}</span>
|
||||
<span>{{ $ts.fileIdOrUrl }}</span>
|
||||
</MkInput>
|
||||
<MkButton @click="find()" primary><Fa :icon="faSearch"/> {{ $t('lookup') }}</MkButton>
|
||||
<MkButton @click="find()" primary><Fa :icon="faSearch"/> {{ $ts.lookup }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -20,18 +20,18 @@
|
|||
<div class="_content">
|
||||
<div class="inputs" style="display: flex;">
|
||||
<MkSelect v-model:value="origin" style="margin: 0; flex: 1;">
|
||||
<template #label>{{ $t('instance') }}</template>
|
||||
<option value="combined">{{ $t('all') }}</option>
|
||||
<option value="local">{{ $t('local') }}</option>
|
||||
<option value="remote">{{ $t('remote') }}</option>
|
||||
<template #label>{{ $ts.instance }}</template>
|
||||
<option value="combined">{{ $ts.all }}</option>
|
||||
<option value="local">{{ $ts.local }}</option>
|
||||
<option value="remote">{{ $ts.remote }}</option>
|
||||
</MkSelect>
|
||||
<MkInput v-model:value="searchHost" :debounce="true" type="search" style="margin: 0; flex: 1;" :disabled="pagination.params().origin === 'local'">
|
||||
<span>{{ $t('host') }}</span>
|
||||
<span>{{ $ts.host }}</span>
|
||||
</MkInput>
|
||||
</div>
|
||||
<div class="inputs" style="display: flex; padding-top: 1.2em;">
|
||||
<MkInput v-model:value="type" :debounce="true" type="search" style="margin: 0; flex: 1;">
|
||||
<span>{{ $t('type') }}</span>
|
||||
<span>{{ $ts.type }}</span>
|
||||
</MkInput>
|
||||
</div>
|
||||
<MkPagination :pagination="pagination" #default="{items}" class="urempief" ref="files">
|
||||
|
@ -43,14 +43,14 @@
|
|||
</div>
|
||||
<div>
|
||||
<MkAcct v-if="file.user" :user="file.user"/>
|
||||
<div v-else>{{ $t('system') }}</div>
|
||||
<div v-else>{{ $ts.system }}</div>
|
||||
</div>
|
||||
<div>
|
||||
<span style="margin-right: 1em;">{{ file.type }}</span>
|
||||
<span>{{ bytes(file.size) }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span>{{ $t('registeredDate') }}: <MkTime :time="file.createdAt" mode="detail"/></span>
|
||||
<span>{{ $ts.registeredDate }}: <MkTime :time="file.createdAt" mode="detail"/></span>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
|
@ -84,7 +84,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('files'),
|
||||
title: this.$ts.files,
|
||||
icon: faCloud
|
||||
},
|
||||
q: null,
|
||||
|
@ -120,7 +120,7 @@ export default defineComponent({
|
|||
clear() {
|
||||
os.dialog({
|
||||
type: 'warning',
|
||||
text: this.$t('clearCachedFilesConfirm'),
|
||||
text: this.$ts.clearCachedFilesConfirm,
|
||||
showCancelButton: true
|
||||
}).then(({ canceled }) => {
|
||||
if (canceled) return;
|
||||
|
@ -142,7 +142,7 @@ export default defineComponent({
|
|||
if (e.code === 'NO_SUCH_FILE') {
|
||||
os.dialog({
|
||||
type: 'error',
|
||||
text: this.$t('notFound')
|
||||
text: this.$ts.notFound
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<template>
|
||||
<div>
|
||||
<MkFolder>
|
||||
<template #header><Fa :icon="faHeartbeat"/> {{ $t('metrics') }}</template>
|
||||
<template #header><Fa :icon="faHeartbeat"/> {{ $ts.metrics }}</template>
|
||||
<div class="_section" style="padding: 0 var(--margin);">
|
||||
<div class="_content">
|
||||
<MkContainer :body-togglable="false" class="_vMargin">
|
||||
<template #header><Fa :icon="faMicrochip"/>{{ $t('cpuAndMemory') }}</template>
|
||||
<template #header><Fa :icon="faMicrochip"/>{{ $ts.cpuAndMemory }}</template>
|
||||
<!--
|
||||
<template #func>
|
||||
<button class="_button" @click="resume" :disabled="!paused"><Fa :icon="faPlay"/></button>
|
||||
|
@ -28,7 +28,7 @@
|
|||
</MkContainer>
|
||||
|
||||
<MkContainer :body-togglable="false" class="_vMargin">
|
||||
<template #header><Fa :icon="faHdd"/> {{ $t('disk') }}</template>
|
||||
<template #header><Fa :icon="faHdd"/> {{ $ts.disk }}</template>
|
||||
<!--
|
||||
<template #func>
|
||||
<button class="_button" @click="resume" :disabled="!paused"><Fa :icon="faPlay"/></button>
|
||||
|
@ -51,7 +51,7 @@
|
|||
</MkContainer>
|
||||
|
||||
<MkContainer :body-togglable="false" class="_vMargin">
|
||||
<template #header><Fa :icon="faExchangeAlt"/> {{ $t('network') }}</template>
|
||||
<template #header><Fa :icon="faExchangeAlt"/> {{ $ts.network }}</template>
|
||||
<!--
|
||||
<template #func>
|
||||
<button class="_button" @click="resume" :disabled="!paused"><Fa :icon="faPlay"/></button>
|
||||
|
@ -75,11 +75,11 @@
|
|||
</MkFolder>
|
||||
|
||||
<MkFolder>
|
||||
<template #header><Fa :icon="faClipboardList"/> {{ $t('jobQueue') }}</template>
|
||||
<template #header><Fa :icon="faClipboardList"/> {{ $ts.jobQueue }}</template>
|
||||
|
||||
<div class="vkyrmkwb" :style="{ gridTemplateRows: queueHeight }">
|
||||
<MkContainer :body-togglable="false" :scrollable="true" :resize-base-el="() => $el">
|
||||
<template #header><Fa :icon="faExclamationTriangle"/> {{ $t('delayed') }}</template>
|
||||
<template #header><Fa :icon="faExclamationTriangle"/> {{ $ts.delayed }}</template>
|
||||
|
||||
<div class="_content">
|
||||
<div class="_keyValue" v-for="job in jobs" :key="job[0]">
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<template>
|
||||
<div v-if="meta" v-show="page === 'index'" class="xhexznfu _section">
|
||||
<MkFolder>
|
||||
<template #header><Fa :icon="faTachometerAlt"/> {{ $t('overview') }}</template>
|
||||
<template #header><Fa :icon="faTachometerAlt"/> {{ $ts.overview }}</template>
|
||||
|
||||
<div class="sboqnrfi" :style="{ gridTemplateRows: overviewHeight }">
|
||||
<MkInstanceStats :chart-limit="300" :detailed="true" class="_vMargin" ref="stats"/>
|
||||
|
||||
<MkContainer :body-togglable="true" class="_vMargin">
|
||||
<template #header><Fa :icon="faInfoCircle"/>{{ $t('instanceInfo') }}</template>
|
||||
<template #header><Fa :icon="faInfoCircle"/>{{ $ts.instanceInfo }}</template>
|
||||
|
||||
<div class="_content">
|
||||
<div class="_keyValue"><b>Misskey</b><span>v{{ version }}</span></div>
|
||||
|
@ -20,7 +20,7 @@
|
|||
</MkContainer>
|
||||
|
||||
<MkContainer :body-togglable="true" :scrollable="true" class="_vMargin" style="height: 300px;">
|
||||
<template #header><Fa :icon="faDatabase"/>{{ $t('database') }}</template>
|
||||
<template #header><Fa :icon="faDatabase"/>{{ $ts.database }}</template>
|
||||
|
||||
<div class="_content" v-if="dbInfo">
|
||||
<table style="border-collapse: collapse; width: 100%;">
|
||||
|
@ -42,7 +42,7 @@
|
|||
</div>
|
||||
<div v-if="page === 'logs'" class="_section">
|
||||
<MkFolder>
|
||||
<template #header><Fa :icon="faStream"/> {{ $t('logs') }}</template>
|
||||
<template #header><Fa :icon="faStream"/> {{ $ts.logs }}</template>
|
||||
|
||||
<div class="_keyValue" v-for="log in modLogs">
|
||||
<b>{{ log.type }}</b><span>by {{ log.user.username }}</span><MkTime :time="log.createdAt" style="opacity: 0.7;"/>
|
||||
|
@ -89,21 +89,21 @@ export default defineComponent({
|
|||
tabs: [{
|
||||
id: 'index',
|
||||
title: null,
|
||||
tooltip: this.$t('instance'),
|
||||
tooltip: this.$ts.instance,
|
||||
icon: faServer,
|
||||
onClick: () => { this.page = 'index'; },
|
||||
selected: computed(() => this.page === 'index')
|
||||
}, {
|
||||
id: 'metrics',
|
||||
title: null,
|
||||
tooltip: this.$t('metrics'),
|
||||
tooltip: this.$ts.metrics,
|
||||
icon: faHeartbeat,
|
||||
onClick: () => { this.page = 'metrics'; },
|
||||
selected: computed(() => this.page === 'metrics')
|
||||
}, {
|
||||
id: 'logs',
|
||||
title: null,
|
||||
tooltip: this.$t('logs'),
|
||||
tooltip: this.$ts.logs,
|
||||
icon: faStream,
|
||||
onClick: () => { this.page = 'logs'; },
|
||||
selected: computed(() => this.page === 'logs')
|
||||
|
|
|
@ -10,11 +10,11 @@
|
|||
<div class="_table section">
|
||||
<div class="_row">
|
||||
<div class="_cell">
|
||||
<div class="_label">{{ $t('software') }}</div>
|
||||
<div class="_label">{{ $ts.software }}</div>
|
||||
<div class="_data">{{ instance.softwareName || '?' }}</div>
|
||||
</div>
|
||||
<div class="_cell">
|
||||
<div class="_label">{{ $t('version') }}</div>
|
||||
<div class="_label">{{ $ts.version }}</div>
|
||||
<div class="_data">{{ instance.softwareVersion || '?' }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -22,77 +22,77 @@
|
|||
<div class="_table data section">
|
||||
<div class="_row">
|
||||
<div class="_cell">
|
||||
<div class="_label">{{ $t('registeredAt') }}</div>
|
||||
<div class="_label">{{ $ts.registeredAt }}</div>
|
||||
<div class="_data">{{ new Date(instance.caughtAt).toLocaleString() }} (<MkTime :time="instance.caughtAt"/>)</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="_row">
|
||||
<div class="_cell">
|
||||
<div class="_label">{{ $t('following') }}</div>
|
||||
<div class="_label">{{ $ts.following }}</div>
|
||||
<button class="_data _textButton" @click="showFollowing()">{{ number(instance.followingCount) }}</button>
|
||||
</div>
|
||||
<div class="_cell">
|
||||
<div class="_label">{{ $t('followers') }}</div>
|
||||
<div class="_label">{{ $ts.followers }}</div>
|
||||
<button class="_data _textButton" @click="showFollowers()">{{ number(instance.followersCount) }}</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="_row">
|
||||
<div class="_cell">
|
||||
<div class="_label">{{ $t('users') }}</div>
|
||||
<div class="_label">{{ $ts.users }}</div>
|
||||
<button class="_data _textButton" @click="showUsers()">{{ number(instance.usersCount) }}</button>
|
||||
</div>
|
||||
<div class="_cell">
|
||||
<div class="_label">{{ $t('notes') }}</div>
|
||||
<div class="_label">{{ $ts.notes }}</div>
|
||||
<div class="_data">{{ number(instance.notesCount) }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="_row">
|
||||
<div class="_cell">
|
||||
<div class="_label">{{ $t('files') }}</div>
|
||||
<div class="_label">{{ $ts.files }}</div>
|
||||
<div class="_data">{{ number(instance.driveFiles) }}</div>
|
||||
</div>
|
||||
<div class="_cell">
|
||||
<div class="_label">{{ $t('storageUsage') }}</div>
|
||||
<div class="_label">{{ $ts.storageUsage }}</div>
|
||||
<div class="_data">{{ bytes(instance.driveUsage) }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="_row">
|
||||
<div class="_cell">
|
||||
<div class="_label">{{ $t('latestRequestSentAt') }}</div>
|
||||
<div class="_label">{{ $ts.latestRequestSentAt }}</div>
|
||||
<div class="_data"><MkTime v-if="instance.latestRequestSentAt" :time="instance.latestRequestSentAt"/><span v-else>N/A</span></div>
|
||||
</div>
|
||||
<div class="_cell">
|
||||
<div class="_label">{{ $t('latestStatus') }}</div>
|
||||
<div class="_label">{{ $ts.latestStatus }}</div>
|
||||
<div class="_data">{{ instance.latestStatus ? instance.latestStatus : 'N/A' }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="_row">
|
||||
<div class="_cell">
|
||||
<div class="_label">{{ $t('latestRequestReceivedAt') }}</div>
|
||||
<div class="_label">{{ $ts.latestRequestReceivedAt }}</div>
|
||||
<div class="_data"><MkTime v-if="instance.latestRequestReceivedAt" :time="instance.latestRequestReceivedAt"/><span v-else>N/A</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chart">
|
||||
<div class="header">
|
||||
<span class="label">{{ $t('charts') }}</span>
|
||||
<span class="label">{{ $ts.charts }}</span>
|
||||
<div class="selects">
|
||||
<MkSelect v-model:value="chartSrc" style="margin: 0; flex: 1;">
|
||||
<option value="requests">{{ $t('_instanceCharts.requests') }}</option>
|
||||
<option value="users">{{ $t('_instanceCharts.users') }}</option>
|
||||
<option value="users-total">{{ $t('_instanceCharts.usersTotal') }}</option>
|
||||
<option value="notes">{{ $t('_instanceCharts.notes') }}</option>
|
||||
<option value="notes-total">{{ $t('_instanceCharts.notesTotal') }}</option>
|
||||
<option value="ff">{{ $t('_instanceCharts.ff') }}</option>
|
||||
<option value="ff-total">{{ $t('_instanceCharts.ffTotal') }}</option>
|
||||
<option value="drive-usage">{{ $t('_instanceCharts.cacheSize') }}</option>
|
||||
<option value="drive-usage-total">{{ $t('_instanceCharts.cacheSizeTotal') }}</option>
|
||||
<option value="drive-files">{{ $t('_instanceCharts.files') }}</option>
|
||||
<option value="drive-files-total">{{ $t('_instanceCharts.filesTotal') }}</option>
|
||||
<option value="requests">{{ $ts._instanceCharts.requests }}</option>
|
||||
<option value="users">{{ $ts._instanceCharts.users }}</option>
|
||||
<option value="users-total">{{ $ts._instanceCharts.usersTotal }}</option>
|
||||
<option value="notes">{{ $ts._instanceCharts.notes }}</option>
|
||||
<option value="notes-total">{{ $ts._instanceCharts.notesTotal }}</option>
|
||||
<option value="ff">{{ $ts._instanceCharts.ff }}</option>
|
||||
<option value="ff-total">{{ $ts._instanceCharts.ffTotal }}</option>
|
||||
<option value="drive-usage">{{ $ts._instanceCharts.cacheSize }}</option>
|
||||
<option value="drive-usage-total">{{ $ts._instanceCharts.cacheSizeTotal }}</option>
|
||||
<option value="drive-files">{{ $ts._instanceCharts.files }}</option>
|
||||
<option value="drive-files-total">{{ $ts._instanceCharts.filesTotal }}</option>
|
||||
</MkSelect>
|
||||
<MkSelect v-model:value="chartSpan" style="margin: 0;">
|
||||
<option value="hour">{{ $t('perHour') }}</option>
|
||||
<option value="day">{{ $t('perDay') }}</option>
|
||||
<option value="hour">{{ $ts.perHour }}</option>
|
||||
<option value="day">{{ $ts.perDay }}</option>
|
||||
</MkSelect>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -101,21 +101,21 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="operations section">
|
||||
<span class="label">{{ $t('operations') }}</span>
|
||||
<MkSwitch v-model:value="isSuspended" class="switch">{{ $t('stopActivityDelivery') }}</MkSwitch>
|
||||
<MkSwitch :value="isBlocked" class="switch" @update:value="changeBlock">{{ $t('blockThisInstance') }}</MkSwitch>
|
||||
<span class="label">{{ $ts.operations }}</span>
|
||||
<MkSwitch v-model:value="isSuspended" class="switch">{{ $ts.stopActivityDelivery }}</MkSwitch>
|
||||
<MkSwitch :value="isBlocked" class="switch" @update:value="changeBlock">{{ $ts.blockThisInstance }}</MkSwitch>
|
||||
<details>
|
||||
<summary>{{ $t('deleteAllFiles') }}</summary>
|
||||
<MkButton @click="deleteAllFiles()" style="margin: 0.5em 0 0.5em 0;"><Fa :icon="faTrashAlt"/> {{ $t('deleteAllFiles') }}</MkButton>
|
||||
<summary>{{ $ts.deleteAllFiles }}</summary>
|
||||
<MkButton @click="deleteAllFiles()" style="margin: 0.5em 0 0.5em 0;"><Fa :icon="faTrashAlt"/> {{ $ts.deleteAllFiles }}</MkButton>
|
||||
</details>
|
||||
<details>
|
||||
<summary>{{ $t('removeAllFollowing') }}</summary>
|
||||
<MkButton @click="removeAllFollowing()" style="margin: 0.5em 0 0.5em 0;"><Fa :icon="faMinusCircle"/> {{ $t('removeAllFollowing') }}</MkButton>
|
||||
<summary>{{ $ts.removeAllFollowing }}</summary>
|
||||
<MkButton @click="removeAllFollowing()" style="margin: 0.5em 0 0.5em 0;"><Fa :icon="faMinusCircle"/> {{ $ts.removeAllFollowing }}</MkButton>
|
||||
<MkInfo warn>{{ $t('removeAllFollowingDescription', { host: instance.host }) }}</MkInfo>
|
||||
</details>
|
||||
</div>
|
||||
<details class="metadata section">
|
||||
<summary class="label">{{ $t('metadata') }}</summary>
|
||||
<summary class="label">{{ $ts.metadata }}</summary>
|
||||
<pre><code>{{ JSON.stringify(instance, null, 2) }}</code></pre>
|
||||
</details>
|
||||
</div>
|
||||
|
@ -442,7 +442,7 @@ export default defineComponent({
|
|||
|
||||
showFollowing() {
|
||||
os.modal(MkUsersDialog, {
|
||||
title: this.$t('instanceFollowing'),
|
||||
title: this.$ts.instanceFollowing,
|
||||
pagination: {
|
||||
endpoint: 'federation/following',
|
||||
limit: 10,
|
||||
|
@ -456,7 +456,7 @@ export default defineComponent({
|
|||
|
||||
showFollowers() {
|
||||
os.modal(MkUsersDialog, {
|
||||
title: this.$t('instanceFollowers'),
|
||||
title: this.$ts.instanceFollowers,
|
||||
pagination: {
|
||||
endpoint: 'federation/followers',
|
||||
limit: 10,
|
||||
|
@ -470,7 +470,7 @@ export default defineComponent({
|
|||
|
||||
showUsers() {
|
||||
os.modal(MkUsersDialog, {
|
||||
title: this.$t('instanceUsers'),
|
||||
title: this.$ts.instanceUsers,
|
||||
pagination: {
|
||||
endpoint: 'federation/users',
|
||||
limit: 10,
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
<div class="_section">
|
||||
<div class="_inputs">
|
||||
<MkInput v-model:value="logDomain" :debounce="true">
|
||||
<span>{{ $t('domain') }}</span>
|
||||
<span>{{ $ts.domain }}</span>
|
||||
</MkInput>
|
||||
<MkSelect v-model:value="logLevel">
|
||||
<template #label>{{ $t('level') }}</template>
|
||||
<option value="all">{{ $t('levels.all') }}</option>
|
||||
<option value="info">{{ $t('levels.info') }}</option>
|
||||
<option value="success">{{ $t('levels.success') }}</option>
|
||||
<option value="warning">{{ $t('levels.warning') }}</option>
|
||||
<option value="error">{{ $t('levels.error') }}</option>
|
||||
<option value="debug">{{ $t('levels.debug') }}</option>
|
||||
<template #label>{{ $ts.level }}</template>
|
||||
<option value="all">{{ $ts.levels.all }}</option>
|
||||
<option value="info">{{ $ts.levels.info }}</option>
|
||||
<option value="success">{{ $ts.levels.success }}</option>
|
||||
<option value="warning">{{ $ts.levels.warning }}</option>
|
||||
<option value="error">{{ $ts.levels.error }}</option>
|
||||
<option value="debug">{{ $ts.levels.debug }}</option>
|
||||
</MkSelect>
|
||||
</div>
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
|||
</code>
|
||||
</div>
|
||||
|
||||
<MkButton @click="deleteAllLogs()" primary><Fa :icon="faTrashAlt"/> {{ $t('deleteAll') }}</MkButton>
|
||||
<MkButton @click="deleteAllLogs()" primary><Fa :icon="faTrashAlt"/> {{ $ts.deleteAll }}</MkButton>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -49,7 +49,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('serverLogs'),
|
||||
title: this.$ts.serverLogs,
|
||||
icon: faStream
|
||||
},
|
||||
logs: [],
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
<span style="margin-left: 8px; opacity: 0.7;">({{ number(job[1]) }} jobs)</span>
|
||||
</div>
|
||||
</div>
|
||||
<span v-else style="opacity: 0.5;">{{ $t('noJobs') }}</span>
|
||||
<span v-else style="opacity: 0.5;">{{ $ts.noJobs }}</span>
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
</XQueue>
|
||||
<section class="_section">
|
||||
<div class="_content">
|
||||
<MkButton @click="clear()"><Fa :icon="faTrashAlt"/> {{ $t('clearQueue') }}</MkButton>
|
||||
<MkButton @click="clear()"><Fa :icon="faTrashAlt"/> {{ $ts.clearQueue }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
@ -31,7 +31,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('jobQueue'),
|
||||
title: this.$ts.jobQueue,
|
||||
icon: faExchangeAlt,
|
||||
},
|
||||
connection: os.stream.useSharedConnection('queueStats'),
|
||||
|
@ -56,8 +56,8 @@ export default defineComponent({
|
|||
clear() {
|
||||
os.dialog({
|
||||
type: 'warning',
|
||||
title: this.$t('clearQueueConfirmTitle'),
|
||||
text: this.$t('clearQueueConfirmText'),
|
||||
title: this.$ts.clearQueueConfirmTitle,
|
||||
text: this.$ts.clearQueueConfirmText,
|
||||
showCancelButton: true
|
||||
}).then(({ canceled }) => {
|
||||
if (canceled) return;
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
<template>
|
||||
<div class="relaycxt">
|
||||
<section class="_section add">
|
||||
<div class="_title"><Fa :icon="faPlus"/> {{ $t('addRelay') }}</div>
|
||||
<div class="_title"><Fa :icon="faPlus"/> {{ $ts.addRelay }}</div>
|
||||
<div class="_content">
|
||||
<MkInput v-model:value="inbox">
|
||||
<span>{{ $t('inboxUrl') }}</span>
|
||||
<span>{{ $ts.inboxUrl }}</span>
|
||||
</MkInput>
|
||||
<MkButton @click="add(inbox)" primary><Fa :icon="faPlus"/> {{ $t('add') }}</MkButton>
|
||||
<MkButton @click="add(inbox)" primary><Fa :icon="faPlus"/> {{ $ts.add }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="_section relays">
|
||||
<div class="_title"><Fa :icon="faProjectDiagram"/> {{ $t('addedRelays') }}</div>
|
||||
<div class="_title"><Fa :icon="faProjectDiagram"/> {{ $ts.addedRelays }}</div>
|
||||
<div class="_content relay" v-for="relay in relays" :key="relay.inbox">
|
||||
<div>{{ relay.inbox }}</div>
|
||||
<div>{{ $t(`_relayStatus.${relay.status}`) }}</div>
|
||||
<MkButton class="button" inline @click="remove(relay.inbox)"><Fa :icon="faTrashAlt"/> {{ $t('remove') }}</MkButton>
|
||||
<MkButton class="button" inline @click="remove(relay.inbox)"><Fa :icon="faTrashAlt"/> {{ $ts.remove }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
@ -38,7 +38,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('relays'),
|
||||
title: this.$ts.relays,
|
||||
icon: faProjectDiagram,
|
||||
},
|
||||
relays: [],
|
||||
|
|
|
@ -1,110 +1,110 @@
|
|||
<template>
|
||||
<div v-if="meta" class="_section">
|
||||
<section class="_card _vMargin">
|
||||
<div class="_title"><Fa :icon="faInfoCircle"/> {{ $t('basicInfo') }}</div>
|
||||
<div class="_title"><Fa :icon="faInfoCircle"/> {{ $ts.basicInfo }}</div>
|
||||
<div class="_content">
|
||||
<MkInput v-model:value="name">{{ $t('instanceName') }}</MkInput>
|
||||
<MkTextarea v-model:value="description">{{ $t('instanceDescription') }}</MkTextarea>
|
||||
<MkInput v-model:value="iconUrl"><template #icon><Fa :icon="faLink"/></template>{{ $t('iconUrl') }}</MkInput>
|
||||
<MkInput v-model:value="bannerUrl"><template #icon><Fa :icon="faLink"/></template>{{ $t('bannerUrl') }}</MkInput>
|
||||
<MkInput v-model:value="backgroundImageUrl"><template #icon><Fa :icon="faLink"/></template>{{ $t('backgroundImageUrl') }}</MkInput>
|
||||
<MkInput v-model:value="logoImageUrl"><template #icon><Fa :icon="faLink"/></template>{{ $t('logoImageUrl') }}</MkInput>
|
||||
<MkInput v-model:value="tosUrl"><template #icon><Fa :icon="faLink"/></template>{{ $t('tosUrl') }}</MkInput>
|
||||
<MkInput v-model:value="maintainerName">{{ $t('maintainerName') }}</MkInput>
|
||||
<MkInput v-model:value="maintainerEmail" type="email"><template #icon><Fa :icon="faEnvelope"/></template>{{ $t('maintainerEmail') }}</MkInput>
|
||||
<MkInput v-model:value="name">{{ $ts.instanceName }}</MkInput>
|
||||
<MkTextarea v-model:value="description">{{ $ts.instanceDescription }}</MkTextarea>
|
||||
<MkInput v-model:value="iconUrl"><template #icon><Fa :icon="faLink"/></template>{{ $ts.iconUrl }}</MkInput>
|
||||
<MkInput v-model:value="bannerUrl"><template #icon><Fa :icon="faLink"/></template>{{ $ts.bannerUrl }}</MkInput>
|
||||
<MkInput v-model:value="backgroundImageUrl"><template #icon><Fa :icon="faLink"/></template>{{ $ts.backgroundImageUrl }}</MkInput>
|
||||
<MkInput v-model:value="logoImageUrl"><template #icon><Fa :icon="faLink"/></template>{{ $ts.logoImageUrl }}</MkInput>
|
||||
<MkInput v-model:value="tosUrl"><template #icon><Fa :icon="faLink"/></template>{{ $ts.tosUrl }}</MkInput>
|
||||
<MkInput v-model:value="maintainerName">{{ $ts.maintainerName }}</MkInput>
|
||||
<MkInput v-model:value="maintainerEmail" type="email"><template #icon><Fa :icon="faEnvelope"/></template>{{ $ts.maintainerEmail }}</MkInput>
|
||||
</div>
|
||||
<div class="_footer">
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $t('save') }}</MkButton>
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $ts.save }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<MkInput v-model:value="pinnedClipId">{{ $t('pinnedClipId') }}</MkInput>
|
||||
<MkInput v-model:value="pinnedClipId">{{ $ts.pinnedClipId }}</MkInput>
|
||||
|
||||
<section class="_card _vMargin">
|
||||
<div class="_content">
|
||||
<MkInput v-model:value="maxNoteTextLength" type="number" :save="() => save()"><template #icon><Fa :icon="faPencilAlt"/></template>{{ $t('maxNoteTextLength') }}</MkInput>
|
||||
<MkInput v-model:value="maxNoteTextLength" type="number" :save="() => save()"><template #icon><Fa :icon="faPencilAlt"/></template>{{ $ts.maxNoteTextLength }}</MkInput>
|
||||
</div>
|
||||
<div class="_content">
|
||||
<MkSwitch v-model:value="enableLocalTimeline" @update:value="save()">{{ $t('enableLocalTimeline') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="enableGlobalTimeline" @update:value="save()">{{ $t('enableGlobalTimeline') }}</MkSwitch>
|
||||
<MkInfo>{{ $t('disablingTimelinesInfo') }}</MkInfo>
|
||||
<MkSwitch v-model:value="enableLocalTimeline" @update:value="save()">{{ $ts.enableLocalTimeline }}</MkSwitch>
|
||||
<MkSwitch v-model:value="enableGlobalTimeline" @update:value="save()">{{ $ts.enableGlobalTimeline }}</MkSwitch>
|
||||
<MkInfo>{{ $ts.disablingTimelinesInfo }}</MkInfo>
|
||||
</div>
|
||||
<div class="_content">
|
||||
<MkSwitch v-model:value="useStarForReactionFallback" @update:value="save()">{{ $t('useStarForReactionFallback') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="useStarForReactionFallback" @update:value="save()">{{ $ts.useStarForReactionFallback }}</MkSwitch>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="_card _vMargin">
|
||||
<div class="_title"><Fa :icon="faUser"/> {{ $t('registration') }}</div>
|
||||
<div class="_title"><Fa :icon="faUser"/> {{ $ts.registration }}</div>
|
||||
<div class="_content">
|
||||
<MkSwitch v-model:value="enableRegistration" @update:value="save()">{{ $t('enableRegistration') }}</MkSwitch>
|
||||
<MkButton v-if="!enableRegistration" @click="invite">{{ $t('invite') }}</MkButton>
|
||||
<MkSwitch v-model:value="enableRegistration" @update:value="save()">{{ $ts.enableRegistration }}</MkSwitch>
|
||||
<MkButton v-if="!enableRegistration" @click="invite">{{ $ts.invite }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="_card _vMargin">
|
||||
<div class="_title"><Fa :icon="faShieldAlt"/> {{ $t('hcaptcha') }}</div>
|
||||
<div class="_title"><Fa :icon="faShieldAlt"/> {{ $ts.hcaptcha }}</div>
|
||||
<div class="_content">
|
||||
<MkSwitch v-model:value="enableHcaptcha">{{ $t('enableHcaptcha') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="enableHcaptcha">{{ $ts.enableHcaptcha }}</MkSwitch>
|
||||
<template v-if="enableHcaptcha">
|
||||
<MkInput v-model:value="hcaptchaSiteKey" :disabled="!enableHcaptcha"><template #icon><Fa :icon="faKey"/></template>{{ $t('hcaptchaSiteKey') }}</MkInput>
|
||||
<MkInput v-model:value="hcaptchaSecretKey" :disabled="!enableHcaptcha"><template #icon><Fa :icon="faKey"/></template>{{ $t('hcaptchaSecretKey') }}</MkInput>
|
||||
<MkInput v-model:value="hcaptchaSiteKey" :disabled="!enableHcaptcha"><template #icon><Fa :icon="faKey"/></template>{{ $ts.hcaptchaSiteKey }}</MkInput>
|
||||
<MkInput v-model:value="hcaptchaSecretKey" :disabled="!enableHcaptcha"><template #icon><Fa :icon="faKey"/></template>{{ $ts.hcaptchaSecretKey }}</MkInput>
|
||||
</template>
|
||||
</div>
|
||||
<div class="_content" v-if="enableHcaptcha">
|
||||
<header>{{ $t('preview') }}</header>
|
||||
<header>{{ $ts.preview }}</header>
|
||||
<captcha v-if="enableHcaptcha" provider="hcaptcha" :sitekey="hcaptchaSiteKey || '10000000-ffff-ffff-ffff-000000000001'"/>
|
||||
</div>
|
||||
<div class="_footer">
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $t('save') }}</MkButton>
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $ts.save }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="_card _vMargin">
|
||||
<div class="_title"><Fa :icon="faShieldAlt"/> {{ $t('recaptcha') }}</div>
|
||||
<div class="_title"><Fa :icon="faShieldAlt"/> {{ $ts.recaptcha }}</div>
|
||||
<div class="_content">
|
||||
<MkSwitch v-model:value="enableRecaptcha" ref="enableRecaptcha">{{ $t('enableRecaptcha') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="enableRecaptcha" ref="enableRecaptcha">{{ $ts.enableRecaptcha }}</MkSwitch>
|
||||
<template v-if="enableRecaptcha">
|
||||
<MkInput v-model:value="recaptchaSiteKey" :disabled="!enableRecaptcha"><template #icon><Fa :icon="faKey"/></template>{{ $t('recaptchaSiteKey') }}</MkInput>
|
||||
<MkInput v-model:value="recaptchaSecretKey" :disabled="!enableRecaptcha"><template #icon><Fa :icon="faKey"/></template>{{ $t('recaptchaSecretKey') }}</MkInput>
|
||||
<MkInput v-model:value="recaptchaSiteKey" :disabled="!enableRecaptcha"><template #icon><Fa :icon="faKey"/></template>{{ $ts.recaptchaSiteKey }}</MkInput>
|
||||
<MkInput v-model:value="recaptchaSecretKey" :disabled="!enableRecaptcha"><template #icon><Fa :icon="faKey"/></template>{{ $ts.recaptchaSecretKey }}</MkInput>
|
||||
</template>
|
||||
</div>
|
||||
<div class="_content" v-if="enableRecaptcha && recaptchaSiteKey">
|
||||
<header>{{ $t('preview') }}</header>
|
||||
<header>{{ $ts.preview }}</header>
|
||||
<captcha v-if="enableRecaptcha" provider="grecaptcha" :sitekey="recaptchaSiteKey"/>
|
||||
</div>
|
||||
<div class="_footer">
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $t('save') }}</MkButton>
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $ts.save }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="_card _vMargin">
|
||||
<div class="_title"><Fa :icon="faEnvelope" /> {{ $t('emailConfig') }}</div>
|
||||
<div class="_title"><Fa :icon="faEnvelope" /> {{ $ts.emailConfig }}</div>
|
||||
<div class="_content">
|
||||
<MkSwitch v-model:value="enableEmail" @update:value="save()">{{ $t('enableEmail') }}<template #desc>{{ $t('emailConfigInfo') }}</template></MkSwitch>
|
||||
<MkInput v-model:value="email" type="email" :disabled="!enableEmail">{{ $t('email') }}</MkInput>
|
||||
<div><b>{{ $t('smtpConfig') }}</b></div>
|
||||
<MkSwitch v-model:value="enableEmail" @update:value="save()">{{ $ts.enableEmail }}<template #desc>{{ $ts.emailConfigInfo }}</template></MkSwitch>
|
||||
<MkInput v-model:value="email" type="email" :disabled="!enableEmail">{{ $ts.email }}</MkInput>
|
||||
<div><b>{{ $ts.smtpConfig }}</b></div>
|
||||
<div class="_inputs">
|
||||
<MkInput v-model:value="smtpHost" :disabled="!enableEmail">{{ $t('smtpHost') }}</MkInput>
|
||||
<MkInput v-model:value="smtpPort" type="number" :disabled="!enableEmail">{{ $t('smtpPort') }}</MkInput>
|
||||
<MkInput v-model:value="smtpHost" :disabled="!enableEmail">{{ $ts.smtpHost }}</MkInput>
|
||||
<MkInput v-model:value="smtpPort" type="number" :disabled="!enableEmail">{{ $ts.smtpPort }}</MkInput>
|
||||
</div>
|
||||
<div class="_inputs">
|
||||
<MkInput v-model:value="smtpUser" :disabled="!enableEmail">{{ $t('smtpUser') }}</MkInput>
|
||||
<MkInput v-model:value="smtpPass" type="password" :disabled="!enableEmail">{{ $t('smtpPass') }}</MkInput>
|
||||
<MkInput v-model:value="smtpUser" :disabled="!enableEmail">{{ $ts.smtpUser }}</MkInput>
|
||||
<MkInput v-model:value="smtpPass" type="password" :disabled="!enableEmail">{{ $ts.smtpPass }}</MkInput>
|
||||
</div>
|
||||
<MkInfo>{{ $t('emptyToDisableSmtpAuth') }}</MkInfo>
|
||||
<MkSwitch v-model:value="smtpSecure" :disabled="!enableEmail">{{ $t('smtpSecure') }}<template #desc>{{ $t('smtpSecureInfo') }}</template></MkSwitch>
|
||||
<MkInfo>{{ $ts.emptyToDisableSmtpAuth }}</MkInfo>
|
||||
<MkSwitch v-model:value="smtpSecure" :disabled="!enableEmail">{{ $ts.smtpSecure }}<template #desc>{{ $ts.smtpSecureInfo }}</template></MkSwitch>
|
||||
<div>
|
||||
<MkButton :disabled="!enableEmail" primary inline @click="save(true)"><Fa :icon="faSave"/> {{ $t('save') }}</MkButton>
|
||||
<MkButton :disabled="!enableEmail" inline @click="testEmail()">{{ $t('testEmail') }}</MkButton>
|
||||
<MkButton :disabled="!enableEmail" primary inline @click="save(true)"><Fa :icon="faSave"/> {{ $ts.save }}</MkButton>
|
||||
<MkButton :disabled="!enableEmail" inline @click="testEmail()">{{ $ts.testEmail }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="_card _vMargin">
|
||||
<div class="_title"><Fa :icon="faBolt"/> {{ $t('serviceworker') }}</div>
|
||||
<div class="_title"><Fa :icon="faBolt"/> {{ $ts.serviceworker }}</div>
|
||||
<div class="_content">
|
||||
<MkSwitch v-model:value="enableServiceWorker">{{ $t('enableServiceworker') }}<template #desc>{{ $t('serviceworkerInfo') }}</template></MkSwitch>
|
||||
<MkSwitch v-model:value="enableServiceWorker">{{ $ts.enableServiceworker }}<template #desc>{{ $ts.serviceworkerInfo }}</template></MkSwitch>
|
||||
<template v-if="enableServiceWorker">
|
||||
<div class="_inputs">
|
||||
<MkInput v-model:value="swPublicKey" :disabled="!enableServiceWorker"><template #icon><Fa :icon="faKey"/></template>Public key</MkInput>
|
||||
|
@ -113,100 +113,100 @@
|
|||
</template>
|
||||
</div>
|
||||
<div class="_footer">
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $t('save') }}</MkButton>
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $ts.save }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="_card _vMargin">
|
||||
<div class="_title"><Fa :icon="faThumbtack"/> {{ $t('pinnedUsers') }}</div>
|
||||
<div class="_title"><Fa :icon="faThumbtack"/> {{ $ts.pinnedUsers }}</div>
|
||||
<div class="_content">
|
||||
<MkTextarea v-model:value="pinnedUsers">
|
||||
<template #desc>{{ $t('pinnedUsersDescription') }} <button class="_textButton" @click="addPinUser">{{ $t('addUser') }}</button></template>
|
||||
<template #desc>{{ $ts.pinnedUsersDescription }} <button class="_textButton" @click="addPinUser">{{ $ts.addUser }}</button></template>
|
||||
</MkTextarea>
|
||||
</div>
|
||||
<div class="_footer">
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $t('save') }}</MkButton>
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $ts.save }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="_card _vMargin">
|
||||
<div class="_title"><Fa :icon="faThumbtack"/> {{ $t('pinnedPages') }}</div>
|
||||
<div class="_title"><Fa :icon="faThumbtack"/> {{ $ts.pinnedPages }}</div>
|
||||
<div class="_content">
|
||||
<MkTextarea v-model:value="pinnedPages">
|
||||
<template #desc>{{ $t('pinnedPagesDescription') }}</template>
|
||||
<template #desc>{{ $ts.pinnedPagesDescription }}</template>
|
||||
</MkTextarea>
|
||||
</div>
|
||||
<div class="_footer">
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $t('save') }}</MkButton>
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $ts.save }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="_card _vMargin">
|
||||
<div class="_title"><Fa :icon="faCloud"/> {{ $t('files') }}</div>
|
||||
<div class="_title"><Fa :icon="faCloud"/> {{ $ts.files }}</div>
|
||||
<div class="_content">
|
||||
<MkSwitch v-model:value="cacheRemoteFiles">{{ $t('cacheRemoteFiles') }}<template #desc>{{ $t('cacheRemoteFilesDescription') }}</template></MkSwitch>
|
||||
<MkSwitch v-model:value="proxyRemoteFiles">{{ $t('proxyRemoteFiles') }}<template #desc>{{ $t('proxyRemoteFilesDescription') }}</template></MkSwitch>
|
||||
<MkInput v-model:value="localDriveCapacityMb" type="number">{{ $t('driveCapacityPerLocalAccount') }}<template #suffix>MB</template><template #desc>{{ $t('inMb') }}</template></MkInput>
|
||||
<MkInput v-model:value="remoteDriveCapacityMb" type="number" :disabled="!cacheRemoteFiles">{{ $t('driveCapacityPerRemoteAccount') }}<template #suffix>MB</template><template #desc>{{ $t('inMb') }}</template></MkInput>
|
||||
<MkSwitch v-model:value="cacheRemoteFiles">{{ $ts.cacheRemoteFiles }}<template #desc>{{ $ts.cacheRemoteFilesDescription }}</template></MkSwitch>
|
||||
<MkSwitch v-model:value="proxyRemoteFiles">{{ $ts.proxyRemoteFiles }}<template #desc>{{ $ts.proxyRemoteFilesDescription }}</template></MkSwitch>
|
||||
<MkInput v-model:value="localDriveCapacityMb" type="number">{{ $ts.driveCapacityPerLocalAccount }}<template #suffix>MB</template><template #desc>{{ $ts.inMb }}</template></MkInput>
|
||||
<MkInput v-model:value="remoteDriveCapacityMb" type="number" :disabled="!cacheRemoteFiles">{{ $ts.driveCapacityPerRemoteAccount }}<template #suffix>MB</template><template #desc>{{ $ts.inMb }}</template></MkInput>
|
||||
</div>
|
||||
<div class="_footer">
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $t('save') }}</MkButton>
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $ts.save }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="_card _vMargin">
|
||||
<div class="_title"><Fa :icon="faCloud"/> {{ $t('objectStorage') }}</div>
|
||||
<div class="_title"><Fa :icon="faCloud"/> {{ $ts.objectStorage }}</div>
|
||||
<div class="_content">
|
||||
<MkSwitch v-model:value="useObjectStorage">{{ $t('useObjectStorage') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="useObjectStorage">{{ $ts.useObjectStorage }}</MkSwitch>
|
||||
<template v-if="useObjectStorage">
|
||||
<MkInput v-model:value="objectStorageBaseUrl" :disabled="!useObjectStorage">{{ $t('objectStorageBaseUrl') }}<template #desc>{{ $t('objectStorageBaseUrlDesc') }}</template></MkInput>
|
||||
<MkInput v-model:value="objectStorageBaseUrl" :disabled="!useObjectStorage">{{ $ts.objectStorageBaseUrl }}<template #desc>{{ $ts.objectStorageBaseUrlDesc }}</template></MkInput>
|
||||
<div class="_inputs">
|
||||
<MkInput v-model:value="objectStorageBucket" :disabled="!useObjectStorage">{{ $t('objectStorageBucket') }}<template #desc>{{ $t('objectStorageBucketDesc') }}</template></MkInput>
|
||||
<MkInput v-model:value="objectStoragePrefix" :disabled="!useObjectStorage">{{ $t('objectStoragePrefix') }}<template #desc>{{ $t('objectStoragePrefixDesc') }}</template></MkInput>
|
||||
<MkInput v-model:value="objectStorageBucket" :disabled="!useObjectStorage">{{ $ts.objectStorageBucket }}<template #desc>{{ $ts.objectStorageBucketDesc }}</template></MkInput>
|
||||
<MkInput v-model:value="objectStoragePrefix" :disabled="!useObjectStorage">{{ $ts.objectStoragePrefix }}<template #desc>{{ $ts.objectStoragePrefixDesc }}</template></MkInput>
|
||||
</div>
|
||||
<MkInput v-model:value="objectStorageEndpoint" :disabled="!useObjectStorage">{{ $t('objectStorageEndpoint') }}<template #desc>{{ $t('objectStorageEndpointDesc') }}</template></MkInput>
|
||||
<MkInput v-model:value="objectStorageEndpoint" :disabled="!useObjectStorage">{{ $ts.objectStorageEndpoint }}<template #desc>{{ $ts.objectStorageEndpointDesc }}</template></MkInput>
|
||||
<div class="_inputs">
|
||||
<MkInput v-model:value="objectStorageRegion" :disabled="!useObjectStorage">{{ $t('objectStorageRegion') }}<template #desc>{{ $t('objectStorageRegionDesc') }}</template></MkInput>
|
||||
<MkInput v-model:value="objectStorageRegion" :disabled="!useObjectStorage">{{ $ts.objectStorageRegion }}<template #desc>{{ $ts.objectStorageRegionDesc }}</template></MkInput>
|
||||
</div>
|
||||
<div class="_inputs">
|
||||
<MkInput v-model:value="objectStorageAccessKey" :disabled="!useObjectStorage"><template #icon><Fa :icon="faKey"/></template>Access key</MkInput>
|
||||
<MkInput v-model:value="objectStorageSecretKey" :disabled="!useObjectStorage"><template #icon><Fa :icon="faKey"/></template>Secret key</MkInput>
|
||||
</div>
|
||||
<MkSwitch v-model:value="objectStorageUseSSL" :disabled="!useObjectStorage">{{ $t('objectStorageUseSSL') }}<template #desc>{{ $t('objectStorageUseSSLDesc') }}</template></MkSwitch>
|
||||
<MkSwitch v-model:value="objectStorageUseProxy" :disabled="!useObjectStorage">{{ $t('objectStorageUseProxy') }}<template #desc>{{ $t('objectStorageUseProxyDesc') }}</template></MkSwitch>
|
||||
<MkSwitch v-model:value="objectStorageSetPublicRead" :disabled="!useObjectStorage">{{ $t('objectStorageSetPublicRead') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="objectStorageUseSSL" :disabled="!useObjectStorage">{{ $ts.objectStorageUseSSL }}<template #desc>{{ $ts.objectStorageUseSSLDesc }}</template></MkSwitch>
|
||||
<MkSwitch v-model:value="objectStorageUseProxy" :disabled="!useObjectStorage">{{ $ts.objectStorageUseProxy }}<template #desc>{{ $ts.objectStorageUseProxyDesc }}</template></MkSwitch>
|
||||
<MkSwitch v-model:value="objectStorageSetPublicRead" :disabled="!useObjectStorage">{{ $ts.objectStorageSetPublicRead }}</MkSwitch>
|
||||
</template>
|
||||
</div>
|
||||
<div class="_footer">
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $t('save') }}</MkButton>
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $ts.save }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="_card _vMargin">
|
||||
<div class="_title"><Fa :icon="faGhost"/> {{ $t('proxyAccount') }}</div>
|
||||
<div class="_title"><Fa :icon="faGhost"/> {{ $ts.proxyAccount }}</div>
|
||||
<div class="_content">
|
||||
<MkInput :value="proxyAccount ? proxyAccount.username : null" disabled><template #prefix>@</template>{{ $t('proxyAccount') }}<template #desc>{{ $t('proxyAccountDescription') }}</template></MkInput>
|
||||
<MkButton primary @click="chooseProxyAccount">{{ $t('chooseProxyAccount') }}</MkButton>
|
||||
<MkInput :value="proxyAccount ? proxyAccount.username : null" disabled><template #prefix>@</template>{{ $ts.proxyAccount }}<template #desc>{{ $ts.proxyAccountDescription }}</template></MkInput>
|
||||
<MkButton primary @click="chooseProxyAccount">{{ $ts.chooseProxyAccount }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="_card _vMargin">
|
||||
<div class="_title"><Fa :icon="faBan"/> {{ $t('blockedInstances') }}</div>
|
||||
<div class="_title"><Fa :icon="faBan"/> {{ $ts.blockedInstances }}</div>
|
||||
<div class="_content">
|
||||
<MkTextarea v-model:value="blockedHosts">
|
||||
<template #desc>{{ $t('blockedInstancesDescription') }}</template>
|
||||
<template #desc>{{ $ts.blockedInstancesDescription }}</template>
|
||||
</MkTextarea>
|
||||
</div>
|
||||
<div class="_footer">
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $t('save') }}</MkButton>
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $ts.save }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="_card _vMargin">
|
||||
<div class="_title"><Fa :icon="faShareAlt"/> {{ $t('integration') }}</div>
|
||||
<div class="_title"><Fa :icon="faShareAlt"/> {{ $ts.integration }}</div>
|
||||
<div class="_content">
|
||||
<header><Fa :icon="faTwitter"/> Twitter</header>
|
||||
<MkSwitch v-model:value="enableTwitterIntegration">{{ $t('enable') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="enableTwitterIntegration">{{ $ts.enable }}</MkSwitch>
|
||||
<template v-if="enableTwitterIntegration">
|
||||
<MkInfo>Callback URL: {{ `${url}/api/tw/cb` }}</MkInfo>
|
||||
<MkInput v-model:value="twitterConsumerKey" :disabled="!enableTwitterIntegration"><template #icon><Fa :icon="faKey"/></template>Consumer Key</MkInput>
|
||||
|
@ -215,7 +215,7 @@
|
|||
</div>
|
||||
<div class="_content">
|
||||
<header><Fa :icon="faGithub"/> GitHub</header>
|
||||
<MkSwitch v-model:value="enableGithubIntegration">{{ $t('enable') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="enableGithubIntegration">{{ $ts.enable }}</MkSwitch>
|
||||
<template v-if="enableGithubIntegration">
|
||||
<MkInfo>Callback URL: {{ `${url}/api/gh/cb` }}</MkInfo>
|
||||
<MkInput v-model:value="githubClientId" :disabled="!enableGithubIntegration"><template #icon><Fa :icon="faKey"/></template>Client ID</MkInput>
|
||||
|
@ -224,7 +224,7 @@
|
|||
</div>
|
||||
<div class="_content">
|
||||
<header><Fa :icon="faDiscord"/> Discord</header>
|
||||
<MkSwitch v-model:value="enableDiscordIntegration">{{ $t('enable') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="enableDiscordIntegration">{{ $ts.enable }}</MkSwitch>
|
||||
<template v-if="enableDiscordIntegration">
|
||||
<MkInfo>Callback URL: {{ `${url}/api/dc/cb` }}</MkInfo>
|
||||
<MkInput v-model:value="discordClientId" :disabled="!enableDiscordIntegration"><template #icon><Fa :icon="faKey"/></template>Client ID</MkInput>
|
||||
|
@ -232,7 +232,7 @@
|
|||
</template>
|
||||
</div>
|
||||
<div class="_footer">
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $t('save') }}</MkButton>
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $ts.save }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
@ -240,7 +240,7 @@
|
|||
<div class="_title"><Fa :icon="faArchway" /> Summaly Proxy</div>
|
||||
<div class="_content">
|
||||
<MkInput v-model:value="summalyProxy">URL</MkInput>
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $t('save') }}</MkButton>
|
||||
<MkButton primary @click="save(true)"><Fa :icon="faSave"/> {{ $ts.save }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
@ -274,7 +274,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('instance'),
|
||||
title: this.$ts.instance,
|
||||
icon: faCog,
|
||||
},
|
||||
meta: null,
|
||||
|
@ -423,8 +423,8 @@ export default defineComponent({
|
|||
os.dialog({
|
||||
type: 'question', // warning だと間違って cancel するかもしれない
|
||||
showCancelButton: true,
|
||||
title: this.$t('settingGuide'),
|
||||
text: this.$t('avoidMultiCaptchaConfirm'),
|
||||
title: this.$ts.settingGuide,
|
||||
text: this.$ts.avoidMultiCaptchaConfirm,
|
||||
}).then(({ canceled }) => {
|
||||
if (canceled) {
|
||||
return;
|
||||
|
@ -440,8 +440,8 @@ export default defineComponent({
|
|||
os.dialog({
|
||||
type: 'question', // warning だと間違って cancel するかもしれない
|
||||
showCancelButton: true,
|
||||
title: this.$t('settingGuide'),
|
||||
text: this.$t('avoidMultiCaptchaConfirm'),
|
||||
title: this.$ts.settingGuide,
|
||||
text: this.$ts.avoidMultiCaptchaConfirm,
|
||||
}).then(({ canceled }) => {
|
||||
if (canceled) {
|
||||
return;
|
||||
|
|
|
@ -24,17 +24,17 @@
|
|||
</div>
|
||||
<div class="_section">
|
||||
<div class="_content">
|
||||
<MkSwitch v-if="user.host == null && $i.isAdmin && (moderator || !user.isAdmin)" @update:value="toggleModerator" v-model:value="moderator">{{ $t('moderator') }}</MkSwitch>
|
||||
<MkSwitch @update:value="toggleSilence" v-model:value="silenced">{{ $t('silence') }}</MkSwitch>
|
||||
<MkSwitch @update:value="toggleSuspend" v-model:value="suspended">{{ $t('suspend') }}</MkSwitch>
|
||||
<MkSwitch v-if="user.host == null && $i.isAdmin && (moderator || !user.isAdmin)" @update:value="toggleModerator" v-model:value="moderator">{{ $ts.moderator }}</MkSwitch>
|
||||
<MkSwitch @update:value="toggleSilence" v-model:value="silenced">{{ $ts.silence }}</MkSwitch>
|
||||
<MkSwitch @update:value="toggleSuspend" v-model:value="suspended">{{ $ts.suspend }}</MkSwitch>
|
||||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_content">
|
||||
<MkButton full @click="openProfile"><Fa :icon="faExternalLinkSquareAlt"/> {{ $t('profile') }}</MkButton>
|
||||
<MkButton full v-if="user.host != null" @click="updateRemoteUser"><Fa :icon="faSync"/> {{ $t('updateRemoteUser') }}</MkButton>
|
||||
<MkButton full @click="resetPassword"><Fa :icon="faKey"/> {{ $t('resetPassword') }}</MkButton>
|
||||
<MkButton full @click="deleteAllFiles" danger><Fa :icon="faTrashAlt"/> {{ $t('deleteAllFiles') }}</MkButton>
|
||||
<MkButton full @click="openProfile"><Fa :icon="faExternalLinkSquareAlt"/> {{ $ts.profile }}</MkButton>
|
||||
<MkButton full v-if="user.host != null" @click="updateRemoteUser"><Fa :icon="faSync"/> {{ $ts.updateRemoteUser }}</MkButton>
|
||||
<MkButton full @click="resetPassword"><Fa :icon="faKey"/> {{ $ts.resetPassword }}</MkButton>
|
||||
<MkButton full @click="deleteAllFiles" danger><Fa :icon="faTrashAlt"/> {{ $ts.deleteAllFiles }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
|
@ -139,7 +139,7 @@ export default defineComponent({
|
|||
const confirm = await os.dialog({
|
||||
type: 'warning',
|
||||
showCancelButton: true,
|
||||
text: v ? this.$t('silenceConfirm') : this.$t('unsilenceConfirm'),
|
||||
text: v ? this.$ts.silenceConfirm : this.$ts.unsilenceConfirm,
|
||||
});
|
||||
if (confirm.canceled) {
|
||||
this.silenced = !v;
|
||||
|
@ -153,7 +153,7 @@ export default defineComponent({
|
|||
const confirm = await os.dialog({
|
||||
type: 'warning',
|
||||
showCancelButton: true,
|
||||
text: v ? this.$t('suspendConfirm') : this.$t('unsuspendConfirm'),
|
||||
text: v ? this.$ts.suspendConfirm : this.$ts.unsuspendConfirm,
|
||||
});
|
||||
if (confirm.canceled) {
|
||||
this.suspended = !v;
|
||||
|
@ -172,7 +172,7 @@ export default defineComponent({
|
|||
const confirm = await os.dialog({
|
||||
type: 'warning',
|
||||
showCancelButton: true,
|
||||
text: this.$t('deleteAllFilesConfirm'),
|
||||
text: this.$ts.deleteAllFilesConfirm,
|
||||
});
|
||||
if (confirm.canceled) return;
|
||||
const process = async () => {
|
||||
|
|
|
@ -2,53 +2,53 @@
|
|||
<div class="mk-instance-users">
|
||||
<div class="_section">
|
||||
<div class="_content">
|
||||
<MkButton inline primary @click="addUser()"><Fa :icon="faPlus"/> {{ $t('addUser') }}</MkButton>
|
||||
<MkButton inline primary @click="addUser()"><Fa :icon="faPlus"/> {{ $ts.addUser }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="_section lookup">
|
||||
<div class="_title"><Fa :icon="faSearch"/> {{ $t('lookup') }}</div>
|
||||
<div class="_title"><Fa :icon="faSearch"/> {{ $ts.lookup }}</div>
|
||||
<div class="_content">
|
||||
<MkInput class="target" v-model:value="target" type="text" @enter="showUser()">
|
||||
<span>{{ $t('usernameOrUserId') }}</span>
|
||||
<span>{{ $ts.usernameOrUserId }}</span>
|
||||
</MkInput>
|
||||
<MkButton @click="showUser()" primary><Fa :icon="faSearch"/> {{ $t('lookup') }}</MkButton>
|
||||
<MkButton @click="showUser()" primary><Fa :icon="faSearch"/> {{ $ts.lookup }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="_section users">
|
||||
<div class="_title"><Fa :icon="faUsers"/> {{ $t('users') }}</div>
|
||||
<div class="_title"><Fa :icon="faUsers"/> {{ $ts.users }}</div>
|
||||
<div class="_content">
|
||||
<div class="inputs" style="display: flex;">
|
||||
<MkSelect v-model:value="sort" style="margin: 0; flex: 1;">
|
||||
<template #label>{{ $t('sort') }}</template>
|
||||
<option value="-createdAt">{{ $t('registeredDate') }} ({{ $t('ascendingOrder') }})</option>
|
||||
<option value="+createdAt">{{ $t('registeredDate') }} ({{ $t('descendingOrder') }})</option>
|
||||
<option value="-updatedAt">{{ $t('lastUsed') }} ({{ $t('ascendingOrder') }})</option>
|
||||
<option value="+updatedAt">{{ $t('lastUsed') }} ({{ $t('descendingOrder') }})</option>
|
||||
<template #label>{{ $ts.sort }}</template>
|
||||
<option value="-createdAt">{{ $ts.registeredDate }} ({{ $ts.ascendingOrder }})</option>
|
||||
<option value="+createdAt">{{ $ts.registeredDate }} ({{ $ts.descendingOrder }})</option>
|
||||
<option value="-updatedAt">{{ $ts.lastUsed }} ({{ $ts.ascendingOrder }})</option>
|
||||
<option value="+updatedAt">{{ $ts.lastUsed }} ({{ $ts.descendingOrder }})</option>
|
||||
</MkSelect>
|
||||
<MkSelect v-model:value="state" style="margin: 0; flex: 1;">
|
||||
<template #label>{{ $t('state') }}</template>
|
||||
<option value="all">{{ $t('all') }}</option>
|
||||
<option value="available">{{ $t('normal') }}</option>
|
||||
<option value="admin">{{ $t('administrator') }}</option>
|
||||
<option value="moderator">{{ $t('moderator') }}</option>
|
||||
<option value="silenced">{{ $t('silence') }}</option>
|
||||
<option value="suspended">{{ $t('suspend') }}</option>
|
||||
<template #label>{{ $ts.state }}</template>
|
||||
<option value="all">{{ $ts.all }}</option>
|
||||
<option value="available">{{ $ts.normal }}</option>
|
||||
<option value="admin">{{ $ts.administrator }}</option>
|
||||
<option value="moderator">{{ $ts.moderator }}</option>
|
||||
<option value="silenced">{{ $ts.silence }}</option>
|
||||
<option value="suspended">{{ $ts.suspend }}</option>
|
||||
</MkSelect>
|
||||
<MkSelect v-model:value="origin" style="margin: 0; flex: 1;">
|
||||
<template #label>{{ $t('instance') }}</template>
|
||||
<option value="combined">{{ $t('all') }}</option>
|
||||
<option value="local">{{ $t('local') }}</option>
|
||||
<option value="remote">{{ $t('remote') }}</option>
|
||||
<template #label>{{ $ts.instance }}</template>
|
||||
<option value="combined">{{ $ts.all }}</option>
|
||||
<option value="local">{{ $ts.local }}</option>
|
||||
<option value="remote">{{ $ts.remote }}</option>
|
||||
</MkSelect>
|
||||
</div>
|
||||
<div class="inputs" style="display: flex; padding-top: 1.2em;">
|
||||
<MkInput v-model:value="searchUsername" style="margin: 0; flex: 1;" type="text" spellcheck="false" @update:value="$refs.users.reload()">
|
||||
<span>{{ $t('username') }}</span>
|
||||
<span>{{ $ts.username }}</span>
|
||||
</MkInput>
|
||||
<MkInput v-model:value="searchHost" style="margin: 0; flex: 1;" type="text" spellcheck="false" @update:value="$refs.users.reload()" :disabled="pagination.params().origin === 'local'">
|
||||
<span>{{ $t('host') }}</span>
|
||||
<span>{{ $ts.host }}</span>
|
||||
</MkInput>
|
||||
</div>
|
||||
|
||||
|
@ -65,10 +65,10 @@
|
|||
<span class="punished" v-if="user.isSuspended"><Fa :icon="faSnowflake"/></span>
|
||||
</header>
|
||||
<div>
|
||||
<span>{{ $t('lastUsed') }}: <MkTime v-if="user.updatedAt" :time="user.updatedAt" mode="detail"/></span>
|
||||
<span>{{ $ts.lastUsed }}: <MkTime v-if="user.updatedAt" :time="user.updatedAt" mode="detail"/></span>
|
||||
</div>
|
||||
<div>
|
||||
<span>{{ $t('registeredDate') }}: <MkTime :time="user.createdAt" mode="detail"/></span>
|
||||
<span>{{ $ts.registeredDate }}: <MkTime :time="user.createdAt" mode="detail"/></span>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
|
@ -101,7 +101,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('users'),
|
||||
title: this.$ts.users,
|
||||
icon: faUsers,
|
||||
action: {
|
||||
icon: faSearch,
|
||||
|
@ -153,7 +153,7 @@ export default defineComponent({
|
|||
if (_notFound) {
|
||||
os.dialog({
|
||||
type: 'error',
|
||||
text: this.$t('noSuchUser')
|
||||
text: this.$ts.noSuchUser
|
||||
});
|
||||
} else {
|
||||
_notFound = true;
|
||||
|
@ -185,13 +185,13 @@ export default defineComponent({
|
|||
|
||||
async addUser() {
|
||||
const { canceled: canceled1, result: username } = await os.dialog({
|
||||
title: this.$t('username'),
|
||||
title: this.$ts.username,
|
||||
input: true
|
||||
});
|
||||
if (canceled1) return;
|
||||
|
||||
const { canceled: canceled2, result: password } = await os.dialog({
|
||||
title: this.$t('password'),
|
||||
title: this.$ts.password,
|
||||
input: { type: 'password' }
|
||||
});
|
||||
if (canceled2) return;
|
||||
|
|
|
@ -18,7 +18,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('mentions'),
|
||||
title: this.$ts.mentions,
|
||||
icon: faAt
|
||||
},
|
||||
pagination: {
|
||||
|
|
|
@ -18,7 +18,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('directNotes'),
|
||||
title: this.$ts.directNotes,
|
||||
icon: faEnvelope
|
||||
},
|
||||
pagination: {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div class="_section">
|
||||
<div class="mk-messaging _content" v-size="{ max: [400] }">
|
||||
<MkButton @click="start" primary class="start"><Fa :icon="faPlus"/> {{ $t('startMessaging') }}</MkButton>
|
||||
<MkButton @click="start" primary class="start"><Fa :icon="faPlus"/> {{ $ts.startMessaging }}</MkButton>
|
||||
|
||||
<div class="history" v-if="messages.length > 0">
|
||||
<MkA v-for="(message, i) in messages"
|
||||
|
@ -23,14 +23,14 @@
|
|||
<MkTime :time="message.createdAt" class="time"/>
|
||||
</header>
|
||||
<div class="body">
|
||||
<p class="text"><span class="me" v-if="isMe(message)">{{ $t('you') }}:</span>{{ message.text }}</p>
|
||||
<p class="text"><span class="me" v-if="isMe(message)">{{ $ts.you }}:</span>{{ message.text }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</MkA>
|
||||
</div>
|
||||
<div class="_fullinfo" v-if="!fetching && messages.length == 0">
|
||||
<img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/>
|
||||
<div>{{ $t('noHistory') }}</div>
|
||||
<div>{{ $ts.noHistory }}</div>
|
||||
</div>
|
||||
<MkLoading v-if="fetching"/>
|
||||
</div>
|
||||
|
@ -53,7 +53,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('messaging'),
|
||||
title: this.$ts.messaging,
|
||||
icon: faComments
|
||||
},
|
||||
fetching: true,
|
||||
|
@ -119,11 +119,11 @@ export default defineComponent({
|
|||
|
||||
start(ev) {
|
||||
os.modalMenu([{
|
||||
text: this.$t('messagingWithUser'),
|
||||
text: this.$ts.messagingWithUser,
|
||||
icon: faUser,
|
||||
action: () => { this.startUser() }
|
||||
}, {
|
||||
text: this.$t('messagingWithGroup'),
|
||||
text: this.$ts.messagingWithGroup,
|
||||
icon: faUsers,
|
||||
action: () => { this.startGroup() }
|
||||
}], ev.currentTarget || ev.target);
|
||||
|
@ -141,14 +141,14 @@ export default defineComponent({
|
|||
if (groups1.length === 0 && groups2.length === 0) {
|
||||
os.dialog({
|
||||
type: 'warning',
|
||||
title: this.$t('youHaveNoGroups'),
|
||||
text: this.$t('joinOrCreateGroup'),
|
||||
title: this.$ts.youHaveNoGroups,
|
||||
text: this.$ts.joinOrCreateGroup,
|
||||
});
|
||||
return;
|
||||
}
|
||||
const { canceled, result: group } = await os.dialog({
|
||||
type: null,
|
||||
title: this.$t('group'),
|
||||
title: this.$ts.group,
|
||||
select: {
|
||||
items: groups1.concat(groups2).map(group => ({
|
||||
value: group, text: group.name
|
||||
|
|
|
@ -8,10 +8,10 @@
|
|||
ref="text"
|
||||
@keypress="onKeypress"
|
||||
@paste="onPaste"
|
||||
:placeholder="$t('inputMessageHere')"
|
||||
:placeholder="$ts.inputMessageHere"
|
||||
></textarea>
|
||||
<div class="file" @click="file = null" v-if="file">{{ file.name }}</div>
|
||||
<button class="send _button" @click="send" :disabled="!canSend || sending" :title="$t('send')">
|
||||
<button class="send _button" @click="send" :disabled="!canSend || sending" :title="$ts.send">
|
||||
<template v-if="!sending"><Fa :icon="faPaperPlane"/></template><template v-if="sending"><Fa icon="spinner .spin"/></template>
|
||||
</button>
|
||||
<button class="_button" @click="chooseFile"><Fa :icon="faPhotoVideo"/></button>
|
||||
|
@ -94,7 +94,7 @@ export default defineComponent({
|
|||
const formatted = `${formatTimeString(new Date(file.lastModified), this.$store.state.pastedFileName).replace(/{{number}}/g, '1')}${ext}`;
|
||||
const name = this.$store.state.pasteDialog
|
||||
? await os.dialog({
|
||||
title: this.$t('enterFileName'),
|
||||
title: this.$ts.enterFileName,
|
||||
input: {
|
||||
default: formatted
|
||||
},
|
||||
|
@ -107,7 +107,7 @@ export default defineComponent({
|
|||
if (items[0].kind == 'file') {
|
||||
os.dialog({
|
||||
type: 'error',
|
||||
text: this.$t('onlyOneFileCanBeAttached')
|
||||
text: this.$ts.onlyOneFileCanBeAttached
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -132,7 +132,7 @@ export default defineComponent({
|
|||
e.preventDefault();
|
||||
os.dialog({
|
||||
type: 'error',
|
||||
text: this.$t('onlyOneFileCanBeAttached')
|
||||
text: this.$ts.onlyOneFileCanBeAttached
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
@ -153,7 +153,7 @@ export default defineComponent({
|
|||
},
|
||||
|
||||
chooseFile(e) {
|
||||
selectFile(e.currentTarget || e.target, this.$t('selectFile'), false).then(file => {
|
||||
selectFile(e.currentTarget || e.target, this.$ts.selectFile, false).then(file => {
|
||||
this.file = file;
|
||||
});
|
||||
},
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<MkAvatar class="avatar" :user="message.user"/>
|
||||
<div class="content">
|
||||
<div class="balloon" :class="{ noText: message.text == null }" >
|
||||
<button class="delete-button" v-if="isMe" :title="$t('delete')" @click="del">
|
||||
<button class="delete-button" v-if="isMe" :title="$ts.delete" @click="del">
|
||||
<img src="/assets/remove.png" alt="Delete"/>
|
||||
</button>
|
||||
<div class="content" v-if="!message.isDeleted">
|
||||
|
@ -16,17 +16,17 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="content" v-else>
|
||||
<p class="is-deleted">{{ $t('deleted') }}</p>
|
||||
<p class="is-deleted">{{ $ts.deleted }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div></div>
|
||||
<MkUrlPreview v-for="url in urls" :url="url" :key="url" style="margin: 8px 0;"/>
|
||||
<footer>
|
||||
<template v-if="isGroup">
|
||||
<span class="read" v-if="message.reads.length > 0">{{ $t('messageRead') }} {{ message.reads.length }}</span>
|
||||
<span class="read" v-if="message.reads.length > 0">{{ $ts.messageRead }} {{ message.reads.length }}</span>
|
||||
</template>
|
||||
<template v-else>
|
||||
<span class="read" v-if="isMe && message.isRead">{{ $t('messageRead') }}</span>
|
||||
<span class="read" v-if="isMe && message.isRead">{{ $ts.messageRead }}</span>
|
||||
</template>
|
||||
<MkTime :time="message.createdAt"/>
|
||||
<template v-if="message.is_edited"><Fa icon="pencil-alt"/></template>
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
<div class="_content mk-messaging-room">
|
||||
<div class="body">
|
||||
<MkLoading v-if="fetching"/>
|
||||
<p class="empty" v-if="!fetching && messages.length == 0"><Fa :icon="faInfoCircle"/>{{ $t('noMessagesYet') }}</p>
|
||||
<p class="no-history" v-if="!fetching && messages.length > 0 && !existMoreMessages"><Fa :icon="faFlag"/>{{ $t('noMoreHistory') }}</p>
|
||||
<p class="empty" v-if="!fetching && messages.length == 0"><Fa :icon="faInfoCircle"/>{{ $ts.noMessagesYet }}</p>
|
||||
<p class="no-history" v-if="!fetching && messages.length > 0 && !existMoreMessages"><Fa :icon="faFlag"/>{{ $ts.noMoreHistory }}</p>
|
||||
<button class="more _button" ref="loadMore" :class="{ fetching: fetchingMoreMessages }" v-show="existMoreMessages" @click="fetchMoreMessages" :disabled="fetchingMoreMessages">
|
||||
<template v-if="fetchingMoreMessages"><Fa icon="spinner" pulse fixed-width/></template>{{ fetchingMoreMessages ? $t('loading') : $t('loadMore') }}
|
||||
<template v-if="fetchingMoreMessages"><Fa icon="spinner" pulse fixed-width/></template>{{ fetchingMoreMessages ? $ts.loading : $ts.loadMore }}
|
||||
</button>
|
||||
<XList class="messages" :items="messages" v-slot="{ item: message }" direction="up" reversed>
|
||||
<XMessage :message="message" :is-group="group != null" :key="message.id"/>
|
||||
|
@ -18,7 +18,7 @@
|
|||
<footer>
|
||||
<transition name="fade">
|
||||
<div class="new-message" v-show="showIndicator">
|
||||
<button class="_buttonPrimary" @click="onIndicatorClick"><i><Fa :icon="faArrowCircleDown"/></i>{{ $t('newMessageExists') }}</button>
|
||||
<button class="_buttonPrimary" @click="onIndicatorClick"><i><Fa :icon="faArrowCircleDown"/></i>{{ $ts.newMessageExists }}</button>
|
||||
</div>
|
||||
</transition>
|
||||
<XForm v-if="!fetching" :user="user" :group="group" ref="form"/>
|
||||
|
@ -174,7 +174,7 @@ const Component = defineComponent({
|
|||
} else if (e.dataTransfer.files.length > 1) {
|
||||
os.dialog({
|
||||
type: 'error',
|
||||
text: this.$t('onlyOneFileCanBeAttached')
|
||||
text: this.$ts.onlyOneFileCanBeAttached
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
@ -311,14 +311,14 @@ const Component = defineComponent({
|
|||
const path = this.groupId ? `/my/messaging/group/${this.groupId}` : `/my/messaging/${this.userAcct}`;
|
||||
|
||||
os.modalMenu([this.inWindow ? undefined : {
|
||||
text: this.$t('openInWindow'),
|
||||
text: this.$ts.openInWindow,
|
||||
icon: faWindowMaximize,
|
||||
action: () => {
|
||||
os.pageWindow(path);
|
||||
this.$router.back();
|
||||
},
|
||||
}, this.inWindow ? undefined : {
|
||||
text: this.$t('popout'),
|
||||
text: this.$ts.popout,
|
||||
icon: faExternalLinkAlt,
|
||||
action: () => {
|
||||
popout(path);
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
<div class="mwysmxbg">
|
||||
<div class="_section">
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.intro') }}</p>
|
||||
<p>{{ $ts._mfm.intro }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.mention') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.mention }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.mentionDescription') }}</p>
|
||||
<p>{{ $ts._mfm.mentionDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_mention"/>
|
||||
<MkTextarea v-model:value="preview_mention"><span>MFM</span></MkTextarea>
|
||||
|
@ -16,9 +16,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.hashtag') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.hashtag }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.hashtagDescription') }}</p>
|
||||
<p>{{ $ts._mfm.hashtagDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_hashtag"/>
|
||||
<MkTextarea v-model:value="preview_hashtag"><span>MFM</span></MkTextarea>
|
||||
|
@ -26,9 +26,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.url') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.url }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.urlDescription') }}</p>
|
||||
<p>{{ $ts._mfm.urlDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_url"/>
|
||||
<MkTextarea v-model:value="preview_url"><span>MFM</span></MkTextarea>
|
||||
|
@ -36,9 +36,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.link') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.link }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.linkDescription') }}</p>
|
||||
<p>{{ $ts._mfm.linkDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_link"/>
|
||||
<MkTextarea v-model:value="preview_link"><span>MFM</span></MkTextarea>
|
||||
|
@ -46,9 +46,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.emoji') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.emoji }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.emojiDescription') }}</p>
|
||||
<p>{{ $ts._mfm.emojiDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_emoji"/>
|
||||
<MkTextarea v-model:value="preview_emoji"><span>MFM</span></MkTextarea>
|
||||
|
@ -56,9 +56,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.bold') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.bold }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.boldDescription') }}</p>
|
||||
<p>{{ $ts._mfm.boldDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_bold"/>
|
||||
<MkTextarea v-model:value="preview_bold"><span>MFM</span></MkTextarea>
|
||||
|
@ -66,9 +66,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.small') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.small }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.smallDescription') }}</p>
|
||||
<p>{{ $ts._mfm.smallDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_small"/>
|
||||
<MkTextarea v-model:value="preview_small"><span>MFM</span></MkTextarea>
|
||||
|
@ -76,9 +76,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.quote') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.quote }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.quoteDescription') }}</p>
|
||||
<p>{{ $ts._mfm.quoteDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_quote"/>
|
||||
<MkTextarea v-model:value="preview_quote"><span>MFM</span></MkTextarea>
|
||||
|
@ -86,9 +86,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.center') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.center }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.centerDescription') }}</p>
|
||||
<p>{{ $ts._mfm.centerDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_center"/>
|
||||
<MkTextarea v-model:value="preview_center"><span>MFM</span></MkTextarea>
|
||||
|
@ -96,9 +96,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.inlineCode') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.inlineCode }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.inlineCodeDescription') }}</p>
|
||||
<p>{{ $ts._mfm.inlineCodeDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_inlineCode"/>
|
||||
<MkTextarea v-model:value="preview_inlineCode"><span>MFM</span></MkTextarea>
|
||||
|
@ -106,9 +106,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.blockCode') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.blockCode }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.blockCodeDescription') }}</p>
|
||||
<p>{{ $ts._mfm.blockCodeDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_blockCode"/>
|
||||
<MkTextarea v-model:value="preview_blockCode"><span>MFM</span></MkTextarea>
|
||||
|
@ -116,9 +116,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.inlineMath') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.inlineMath }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.inlineMathDescription') }}</p>
|
||||
<p>{{ $ts._mfm.inlineMathDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_inlineMath"/>
|
||||
<MkTextarea v-model:value="preview_inlineMath"><span>MFM</span></MkTextarea>
|
||||
|
@ -126,9 +126,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.search') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.search }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.searchDescription') }}</p>
|
||||
<p>{{ $ts._mfm.searchDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_search"/>
|
||||
<MkTextarea v-model:value="preview_search"><span>MFM</span></MkTextarea>
|
||||
|
@ -136,9 +136,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.flip') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.flip }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.flipDescription') }}</p>
|
||||
<p>{{ $ts._mfm.flipDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_flip"/>
|
||||
<MkTextarea v-model:value="preview_flip"><span>MFM</span></MkTextarea>
|
||||
|
@ -146,9 +146,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.jelly') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.jelly }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.jellyDescription') }}</p>
|
||||
<p>{{ $ts._mfm.jellyDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_jelly"/>
|
||||
<MkTextarea v-model:value="preview_jelly"><span>MFM</span></MkTextarea>
|
||||
|
@ -156,9 +156,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.tada') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.tada }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.tadaDescription') }}</p>
|
||||
<p>{{ $ts._mfm.tadaDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_tada"/>
|
||||
<MkTextarea v-model:value="preview_tada"><span>MFM</span></MkTextarea>
|
||||
|
@ -166,9 +166,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.jump') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.jump }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.jumpDescription') }}</p>
|
||||
<p>{{ $ts._mfm.jumpDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_jump"/>
|
||||
<MkTextarea v-model:value="preview_jump"><span>MFM</span></MkTextarea>
|
||||
|
@ -176,9 +176,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.bounce') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.bounce }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.bounceDescription') }}</p>
|
||||
<p>{{ $ts._mfm.bounceDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_bounce"/>
|
||||
<MkTextarea v-model:value="preview_bounce"><span>MFM</span></MkTextarea>
|
||||
|
@ -186,9 +186,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.spin') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.spin }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.spinDescription') }}</p>
|
||||
<p>{{ $ts._mfm.spinDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_spin"/>
|
||||
<MkTextarea v-model:value="preview_spin"><span>MFM</span></MkTextarea>
|
||||
|
@ -196,9 +196,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.shake') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.shake }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.shakeDescription') }}</p>
|
||||
<p>{{ $ts._mfm.shakeDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_shake"/>
|
||||
<MkTextarea v-model:value="preview_shake"><span>MFM</span></MkTextarea>
|
||||
|
@ -206,9 +206,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="_section">
|
||||
<div class="_title">{{ $t('_mfm.twitch') }}</div>
|
||||
<div class="_title">{{ $ts._mfm.twitch }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_mfm.twitchDescription') }}</p>
|
||||
<p>{{ $ts._mfm.twitchDescription }}</p>
|
||||
<div class="preview _panel">
|
||||
<Mfm :text="preview_twitch"/>
|
||||
<MkTextarea v-model:value="preview_twitch"><span>MFM</span></MkTextarea>
|
||||
|
@ -231,22 +231,22 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('_mfm.cheatSheet'),
|
||||
title: this.$ts._mfm.cheatSheet,
|
||||
icon: faQuestionCircle,
|
||||
},
|
||||
preview_mention: '@example',
|
||||
preview_hashtag: '#test',
|
||||
preview_url: `https://example.com`,
|
||||
preview_link: `[${this.$t('_mfm.dummy')}](https://example.com)`,
|
||||
preview_link: `[${this.$ts._mfm.dummy}](https://example.com)`,
|
||||
preview_emoji: `:${this.$instance.emojis[0].name}:`,
|
||||
preview_bold: `**${this.$t('_mfm.dummy')}**`,
|
||||
preview_small: `<small>${this.$t('_mfm.dummy')}</small>`,
|
||||
preview_center: `<center>${this.$t('_mfm.dummy')}</center>`,
|
||||
preview_bold: `**${this.$ts._mfm.dummy}**`,
|
||||
preview_small: `<small>${this.$ts._mfm.dummy}</small>`,
|
||||
preview_center: `<center>${this.$ts._mfm.dummy}</center>`,
|
||||
preview_inlineCode: '`<: "Hello, world!"`',
|
||||
preview_blockCode: '```\n~ (#i, 100) {\n\t<: ? ((i % 15) = 0) "FizzBuzz"\n\t\t.? ((i % 3) = 0) "Fizz"\n\t\t.? ((i % 5) = 0) "Buzz"\n\t\t. i\n}\n```',
|
||||
preview_inlineMath: '\\(x= \\frac{-b\' \\pm \\sqrt{(b\')^2-ac}}{a}\\)',
|
||||
preview_quote: `> ${this.$t('_mfm.dummy')}`,
|
||||
preview_search: `${this.$t('_mfm.dummy')} 検索`,
|
||||
preview_quote: `> ${this.$ts._mfm.dummy}`,
|
||||
preview_search: `${this.$ts._mfm.dummy} 検索`,
|
||||
preview_jelly: `[jelly 🍮]`,
|
||||
preview_tada: `[tada 🍮]`,
|
||||
preview_jump: `[jump 🍮]`,
|
||||
|
@ -254,7 +254,7 @@ export default defineComponent({
|
|||
preview_shake: `[shake 🍮]`,
|
||||
preview_twitch: `[twitch 🍮]`,
|
||||
preview_spin: `[spin 🍮] [spin.left 🍮] [spin.alternate 🍮]\n[spin.x 🍮] [spin.x,left 🍮] [spin.x,alternate 🍮]\n[spin.y 🍮] [spin.y,left 🍮] [spin.y,alternate 🍮]`,
|
||||
preview_flip: `[flip ${this.$t('_mfm.dummy')}]\n[flip.v ${this.$t('_mfm.dummy')}]\n[flip.h,v ${this.$t('_mfm.dummy')}]`,
|
||||
preview_flip: `[flip ${this.$ts._mfm.dummy}]\n[flip.v ${this.$ts._mfm.dummy}]\n[flip.h,v ${this.$ts._mfm.dummy}]`,
|
||||
}
|
||||
},
|
||||
});
|
||||
|
|
|
@ -7,27 +7,27 @@
|
|||
</div>
|
||||
<div class="denied _section" v-if="state == 'denied'">
|
||||
<div class="_content">
|
||||
<p>{{ $t('_auth.denied') }}</p>
|
||||
<p>{{ $ts._auth.denied }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="accepted _section" v-else-if="state == 'accepted'">
|
||||
<div class="_content">
|
||||
<p v-if="callback">{{ $t('_auth.callback') }}<MkEllipsis/></p>
|
||||
<p v-else>{{ $t('_auth.pleaseGoBack') }}</p>
|
||||
<p v-if="callback">{{ $ts._auth.callback }}<MkEllipsis/></p>
|
||||
<p v-else>{{ $ts._auth.pleaseGoBack }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="_section" v-else>
|
||||
<div class="_title" v-if="name">{{ $t('_auth.shareAccess', { name: name }) }}</div>
|
||||
<div class="_title" v-else>{{ $t('_auth.shareAccessAsk') }}</div>
|
||||
<div class="_title" v-else>{{ $ts._auth.shareAccessAsk }}</div>
|
||||
<div class="_content">
|
||||
<p>{{ $t('_auth.permissionAsk') }}</p>
|
||||
<p>{{ $ts._auth.permissionAsk }}</p>
|
||||
<ul>
|
||||
<li v-for="p in permission" :key="p">{{ $t(`_permissions.${p}`) }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="_footer">
|
||||
<MkButton @click="deny" inline>{{ $t('cancel') }}</MkButton>
|
||||
<MkButton @click="accept" inline primary>{{ $t('accept') }}</MkButton>
|
||||
<MkButton @click="deny" inline>{{ $ts.cancel }}</MkButton>
|
||||
<MkButton @click="accept" inline primary>{{ $ts.accept }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -3,44 +3,44 @@
|
|||
<div class="_title" v-if="antenna.name">{{ antenna.name }}</div>
|
||||
<div class="_content body">
|
||||
<MkInput v-model:value="name">
|
||||
<span>{{ $t('name') }}</span>
|
||||
<span>{{ $ts.name }}</span>
|
||||
</MkInput>
|
||||
<MkSelect v-model:value="src">
|
||||
<template #label>{{ $t('antennaSource') }}</template>
|
||||
<option value="all">{{ $t('_antennaSources.all') }}</option>
|
||||
<option value="home">{{ $t('_antennaSources.homeTimeline') }}</option>
|
||||
<option value="users">{{ $t('_antennaSources.users') }}</option>
|
||||
<option value="list">{{ $t('_antennaSources.userList') }}</option>
|
||||
<option value="group">{{ $t('_antennaSources.userGroup') }}</option>
|
||||
<template #label>{{ $ts.antennaSource }}</template>
|
||||
<option value="all">{{ $ts._antennaSources.all }}</option>
|
||||
<option value="home">{{ $ts._antennaSources.homeTimeline }}</option>
|
||||
<option value="users">{{ $ts._antennaSources.users }}</option>
|
||||
<option value="list">{{ $ts._antennaSources.userList }}</option>
|
||||
<option value="group">{{ $ts._antennaSources.userGroup }}</option>
|
||||
</MkSelect>
|
||||
<MkSelect v-model:value="userListId" v-if="src === 'list'">
|
||||
<template #label>{{ $t('userList') }}</template>
|
||||
<template #label>{{ $ts.userList }}</template>
|
||||
<option v-for="list in userLists" :value="list.id" :key="list.id">{{ list.name }}</option>
|
||||
</MkSelect>
|
||||
<MkSelect v-model:value="userGroupId" v-else-if="src === 'group'">
|
||||
<template #label>{{ $t('userGroup') }}</template>
|
||||
<template #label>{{ $ts.userGroup }}</template>
|
||||
<option v-for="group in userGroups" :value="group.id" :key="group.id">{{ group.name }}</option>
|
||||
</MkSelect>
|
||||
<MkTextarea v-model:value="users" v-else-if="src === 'users'">
|
||||
<span>{{ $t('users') }}</span>
|
||||
<template #desc>{{ $t('antennaUsersDescription') }} <button class="_textButton" @click="addUser">{{ $t('addUser') }}</button></template>
|
||||
<span>{{ $ts.users }}</span>
|
||||
<template #desc>{{ $ts.antennaUsersDescription }} <button class="_textButton" @click="addUser">{{ $ts.addUser }}</button></template>
|
||||
</MkTextarea>
|
||||
<MkSwitch v-model:value="withReplies">{{ $t('withReplies') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="withReplies">{{ $ts.withReplies }}</MkSwitch>
|
||||
<MkTextarea v-model:value="keywords">
|
||||
<span>{{ $t('antennaKeywords') }}</span>
|
||||
<template #desc>{{ $t('antennaKeywordsDescription') }}</template>
|
||||
<span>{{ $ts.antennaKeywords }}</span>
|
||||
<template #desc>{{ $ts.antennaKeywordsDescription }}</template>
|
||||
</MkTextarea>
|
||||
<MkTextarea v-model:value="excludeKeywords">
|
||||
<span>{{ $t('antennaExcludeKeywords') }}</span>
|
||||
<template #desc>{{ $t('antennaKeywordsDescription') }}</template>
|
||||
<span>{{ $ts.antennaExcludeKeywords }}</span>
|
||||
<template #desc>{{ $ts.antennaKeywordsDescription }}</template>
|
||||
</MkTextarea>
|
||||
<MkSwitch v-model:value="caseSensitive">{{ $t('caseSensitive') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="withFile">{{ $t('withFileAntenna') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="notify">{{ $t('notifyAntenna') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="caseSensitive">{{ $ts.caseSensitive }}</MkSwitch>
|
||||
<MkSwitch v-model:value="withFile">{{ $ts.withFileAntenna }}</MkSwitch>
|
||||
<MkSwitch v-model:value="notify">{{ $ts.notifyAntenna }}</MkSwitch>
|
||||
</div>
|
||||
<div class="_footer">
|
||||
<MkButton inline @click="saveAntenna()" primary><Fa :icon="faSave"/> {{ $t('save') }}</MkButton>
|
||||
<MkButton inline @click="deleteAntenna()" v-if="antenna.id != null"><Fa :icon="faTrash"/> {{ $t('delete') }}</MkButton>
|
||||
<MkButton inline @click="saveAntenna()" primary><Fa :icon="faSave"/> {{ $ts.save }}</MkButton>
|
||||
<MkButton inline @click="deleteAntenna()" v-if="antenna.id != null"><Fa :icon="faTrash"/> {{ $ts.delete }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div class="ieepwinx _section">
|
||||
<MkButton @click="create" primary class="add"><Fa :icon="faPlus"/> {{ $t('add') }}</MkButton>
|
||||
<MkButton @click="create" primary class="add"><Fa :icon="faPlus"/> {{ $ts.add }}</MkButton>
|
||||
|
||||
<div class="_content">
|
||||
<XAntenna v-if="draft" :antenna="draft" @created="onAntennaCreated" style="margin-bottom: var(--margin);"/>
|
||||
|
@ -29,7 +29,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('manageAntennas'),
|
||||
title: this.$ts.manageAntennas,
|
||||
icon: faSatellite,
|
||||
action: {
|
||||
icon: faPlus,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div class="_section qtcaoidl">
|
||||
<MkButton @click="create" primary class="add"><Fa :icon="faPlus"/> {{ $t('add') }}</MkButton>
|
||||
<MkButton @click="create" primary class="add"><Fa :icon="faPlus"/> {{ $ts.add }}</MkButton>
|
||||
|
||||
<div class="_content">
|
||||
<MkPagination :pagination="pagination" #default="{items}" ref="list" class="list">
|
||||
|
@ -29,7 +29,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('clip'),
|
||||
title: this.$ts.clip,
|
||||
icon: faPaperclip,
|
||||
action: {
|
||||
icon: faPlus,
|
||||
|
@ -47,20 +47,20 @@ export default defineComponent({
|
|||
|
||||
methods: {
|
||||
async create() {
|
||||
const { canceled, result } = await os.form(this.$t('createNewClip'), {
|
||||
const { canceled, result } = await os.form(this.$ts.createNewClip, {
|
||||
name: {
|
||||
type: 'string',
|
||||
label: this.$t('name')
|
||||
label: this.$ts.name
|
||||
},
|
||||
description: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
multiline: true,
|
||||
label: this.$t('description')
|
||||
label: this.$ts.description
|
||||
},
|
||||
isPublic: {
|
||||
type: 'boolean',
|
||||
label: this.$t('public'),
|
||||
label: this.$ts.public,
|
||||
default: false
|
||||
}
|
||||
});
|
||||
|
|
|
@ -3,17 +3,17 @@
|
|||
<transition name="zoom" mode="out-in">
|
||||
<div v-if="group" class="_section">
|
||||
<div class="_content">
|
||||
<MkButton inline @click="invite()">{{ $t('invite') }}</MkButton>
|
||||
<MkButton inline @click="renameGroup()">{{ $t('rename') }}</MkButton>
|
||||
<MkButton inline @click="transfer()">{{ $t('transfer') }}</MkButton>
|
||||
<MkButton inline @click="deleteGroup()">{{ $t('delete') }}</MkButton>
|
||||
<MkButton inline @click="invite()">{{ $ts.invite }}</MkButton>
|
||||
<MkButton inline @click="renameGroup()">{{ $ts.rename }}</MkButton>
|
||||
<MkButton inline @click="transfer()">{{ $ts.transfer }}</MkButton>
|
||||
<MkButton inline @click="deleteGroup()">{{ $ts.delete }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
</transition>
|
||||
|
||||
<transition name="zoom" mode="out-in">
|
||||
<div v-if="group" class="_section members _vMargin">
|
||||
<div class="_title">{{ $t('members') }}</div>
|
||||
<div class="_title">{{ $ts.members }}</div>
|
||||
<div class="_content">
|
||||
<div class="users">
|
||||
<div class="user _panel" v-for="user in users" :key="user.id">
|
||||
|
@ -101,7 +101,7 @@ export default defineComponent({
|
|||
|
||||
async renameGroup() {
|
||||
const { canceled, result: name } = await os.dialog({
|
||||
title: this.$t('groupName'),
|
||||
title: this.$ts.groupName,
|
||||
input: {
|
||||
default: this.group.name
|
||||
}
|
||||
|
|
|
@ -2,15 +2,15 @@
|
|||
<div class="">
|
||||
<div class="_section" style="padding: 0;">
|
||||
<MkTab v-model:value="tab">
|
||||
<option value="owned">{{ $t('ownedGroups') }}</option>
|
||||
<option value="joined">{{ $t('joinedGroups') }}</option>
|
||||
<option value="invites"><Fa :icon="faEnvelopeOpenText"/> {{ $t('invites') }}</option>
|
||||
<option value="owned">{{ $ts.ownedGroups }}</option>
|
||||
<option value="joined">{{ $ts.joinedGroups }}</option>
|
||||
<option value="invites"><Fa :icon="faEnvelopeOpenText"/> {{ $ts.invites }}</option>
|
||||
</MkTab>
|
||||
</div>
|
||||
|
||||
<div class="_section">
|
||||
<div class="_content" v-if="tab === 'owned'">
|
||||
<MkButton @click="create" primary style="margin: 0 auto var(--margin) auto;"><Fa :icon="faPlus"/> {{ $t('createGroup') }}</MkButton>
|
||||
<MkButton @click="create" primary style="margin: 0 auto var(--margin) auto;"><Fa :icon="faPlus"/> {{ $ts.createGroup }}</MkButton>
|
||||
|
||||
<MkPagination :pagination="ownedPagination" #default="{items}" ref="owned">
|
||||
<div class="_card" v-for="group in items" :key="group.id">
|
||||
|
@ -35,8 +35,8 @@
|
|||
<div class="_title">{{ invitation.group.name }}</div>
|
||||
<div class="_content"><MkAvatars :user-ids="invitation.group.userIds"/></div>
|
||||
<div class="_footer">
|
||||
<MkButton @click="acceptInvite(invitation)" primary inline><Fa :icon="faCheck"/> {{ $t('accept') }}</MkButton>
|
||||
<MkButton @click="rejectInvite(invitation)" primary inline><Fa :icon="faBan"/> {{ $t('reject') }}</MkButton>
|
||||
<MkButton @click="acceptInvite(invitation)" primary inline><Fa :icon="faCheck"/> {{ $ts.accept }}</MkButton>
|
||||
<MkButton @click="rejectInvite(invitation)" primary inline><Fa :icon="faBan"/> {{ $ts.reject }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
</MkPagination>
|
||||
|
@ -67,7 +67,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('groups'),
|
||||
title: this.$ts.groups,
|
||||
icon: faUsers
|
||||
},
|
||||
tab: 'owned',
|
||||
|
@ -90,7 +90,7 @@ export default defineComponent({
|
|||
methods: {
|
||||
async create() {
|
||||
const { canceled, result: name } = await os.dialog({
|
||||
title: this.$t('groupName'),
|
||||
title: this.$ts.groupName,
|
||||
input: true
|
||||
});
|
||||
if (canceled) return;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div class="qkcjvfiv _section">
|
||||
<MkButton @click="create" primary class="add"><Fa :icon="faPlus"/> {{ $t('createList') }}</MkButton>
|
||||
<MkButton @click="create" primary class="add"><Fa :icon="faPlus"/> {{ $ts.createList }}</MkButton>
|
||||
|
||||
<MkPagination :pagination="pagination" #default="{items}" class="lists _content" ref="list">
|
||||
<div class="list _panel" v-for="(list, i) in items" :key="list.id">
|
||||
|
@ -26,7 +26,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('manageLists'),
|
||||
title: this.$ts.manageLists,
|
||||
icon: faListUl,
|
||||
action: {
|
||||
icon: faPlus,
|
||||
|
@ -44,7 +44,7 @@ export default defineComponent({
|
|||
methods: {
|
||||
async create() {
|
||||
const { canceled, result: name } = await os.dialog({
|
||||
title: this.$t('enterListName'),
|
||||
title: this.$ts.enterListName,
|
||||
input: true
|
||||
});
|
||||
if (canceled) return;
|
||||
|
|
|
@ -3,16 +3,16 @@
|
|||
<transition name="zoom" mode="out-in">
|
||||
<div v-if="list" class="_section">
|
||||
<div class="_content">
|
||||
<MkButton inline @click="addUser()">{{ $t('addUser') }}</MkButton>
|
||||
<MkButton inline @click="renameList()">{{ $t('rename') }}</MkButton>
|
||||
<MkButton inline @click="deleteList()">{{ $t('delete') }}</MkButton>
|
||||
<MkButton inline @click="addUser()">{{ $ts.addUser }}</MkButton>
|
||||
<MkButton inline @click="renameList()">{{ $ts.rename }}</MkButton>
|
||||
<MkButton inline @click="deleteList()">{{ $ts.delete }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
</transition>
|
||||
|
||||
<transition name="zoom" mode="out-in">
|
||||
<div v-if="list" class="_section members _vMargin">
|
||||
<div class="_title">{{ $t('members') }}</div>
|
||||
<div class="_title">{{ $ts.members }}</div>
|
||||
<div class="_content">
|
||||
<div class="users">
|
||||
<div class="user _panel" v-for="user in users" :key="user.id">
|
||||
|
@ -102,7 +102,7 @@ export default defineComponent({
|
|||
|
||||
async renameList() {
|
||||
const { canceled, result: name } = await os.dialog({
|
||||
title: this.$t('enterListName'),
|
||||
title: this.$ts.enterListName,
|
||||
input: {
|
||||
default: this.list.name
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<div class="ipledcug">
|
||||
<div class="_fullinfo">
|
||||
<img src="https://xn--931a.moe/assets/not-found.jpg" class="_ghost"/>
|
||||
<div>{{ $t('notFoundDescription') }}</div>
|
||||
<div>{{ $ts.notFoundDescription }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -16,7 +16,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('notFound'),
|
||||
title: this.$ts.notFound,
|
||||
icon: faExclamationTriangle
|
||||
},
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
<XNote v-model:note="note" :key="note.id" :detail="true" class="_vMargin"/>
|
||||
</div>
|
||||
<div class="_content clips _vMargin" v-if="clips && clips.length > 0">
|
||||
<div class="title">{{ $t('clip') }}</div>
|
||||
<div class="title">{{ $ts.clip }}</div>
|
||||
<MkA v-for="item in clips" :key="item.id" :to="`/clips/${item.id}`" class="item _panel _vMargin">
|
||||
<b>{{ item.name }}</b>
|
||||
<div v-if="item.description" class="description">{{ item.description }}</div>
|
||||
|
@ -60,7 +60,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: computed(() => this.note ? {
|
||||
title: this.$t('note'),
|
||||
title: this.$ts.note,
|
||||
avatar: this.note.user,
|
||||
} : null),
|
||||
note: null,
|
||||
|
|
|
@ -21,7 +21,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('notifications'),
|
||||
title: this.$ts.notifications,
|
||||
icon: faBell
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,37 +1,37 @@
|
|||
<template>
|
||||
<XContainer @remove="() => $emit('remove')" :draggable="true">
|
||||
<template #header><Fa :icon="faBolt"/> {{ $t('_pages.blocks.button') }}</template>
|
||||
<template #header><Fa :icon="faBolt"/> {{ $ts._pages.blocks.button }}</template>
|
||||
|
||||
<section class="xfhsjczc">
|
||||
<MkInput v-model:value="value.text"><span>{{ $t('_pages.blocks._button.text') }}</span></MkInput>
|
||||
<MkSwitch v-model:value="value.primary"><span>{{ $t('_pages.blocks._button.colored') }}</span></MkSwitch>
|
||||
<MkInput v-model:value="value.text"><span>{{ $ts._pages.blocks._button.text }}</span></MkInput>
|
||||
<MkSwitch v-model:value="value.primary"><span>{{ $ts._pages.blocks._button.colored }}</span></MkSwitch>
|
||||
<MkSelect v-model:value="value.action">
|
||||
<template #label>{{ $t('_pages.blocks._button.action') }}</template>
|
||||
<option value="dialog">{{ $t('_pages.blocks._button._action.dialog') }}</option>
|
||||
<option value="resetRandom">{{ $t('_pages.blocks._button._action.resetRandom') }}</option>
|
||||
<option value="pushEvent">{{ $t('_pages.blocks._button._action.pushEvent') }}</option>
|
||||
<option value="callAiScript">{{ $t('_pages.blocks._button._action.callAiScript') }}</option>
|
||||
<template #label>{{ $ts._pages.blocks._button.action }}</template>
|
||||
<option value="dialog">{{ $ts._pages.blocks._button._action.dialog }}</option>
|
||||
<option value="resetRandom">{{ $ts._pages.blocks._button._action.resetRandom }}</option>
|
||||
<option value="pushEvent">{{ $ts._pages.blocks._button._action.pushEvent }}</option>
|
||||
<option value="callAiScript">{{ $ts._pages.blocks._button._action.callAiScript }}</option>
|
||||
</MkSelect>
|
||||
<template v-if="value.action === 'dialog'">
|
||||
<MkInput v-model:value="value.content"><span>{{ $t('_pages.blocks._button._action._dialog.content') }}</span></MkInput>
|
||||
<MkInput v-model:value="value.content"><span>{{ $ts._pages.blocks._button._action._dialog.content }}</span></MkInput>
|
||||
</template>
|
||||
<template v-else-if="value.action === 'pushEvent'">
|
||||
<MkInput v-model:value="value.event"><span>{{ $t('_pages.blocks._button._action._pushEvent.event') }}</span></MkInput>
|
||||
<MkInput v-model:value="value.message"><span>{{ $t('_pages.blocks._button._action._pushEvent.message') }}</span></MkInput>
|
||||
<MkInput v-model:value="value.event"><span>{{ $ts._pages.blocks._button._action._pushEvent.event }}</span></MkInput>
|
||||
<MkInput v-model:value="value.message"><span>{{ $ts._pages.blocks._button._action._pushEvent.message }}</span></MkInput>
|
||||
<MkSelect v-model:value="value.var">
|
||||
<template #label>{{ $t('_pages.blocks._button._action._pushEvent.variable') }}</template>
|
||||
<template #label>{{ $ts._pages.blocks._button._action._pushEvent.variable }}</template>
|
||||
<option :value="null">{{ $t('_pages.blocks._button._action._pushEvent.no-variable') }}</option>
|
||||
<option v-for="v in hpml.getVarsByType()" :value="v.name">{{ v.name }}</option>
|
||||
<optgroup :label="$t('_pages.script.pageVariables')">
|
||||
<optgroup :label="$ts._pages.script.pageVariables">
|
||||
<option v-for="v in hpml.getPageVarsByType()" :value="v">{{ v }}</option>
|
||||
</optgroup>
|
||||
<optgroup :label="$t('_pages.script.enviromentVariables')">
|
||||
<optgroup :label="$ts._pages.script.enviromentVariables">
|
||||
<option v-for="v in hpml.getEnvVarsByType()" :value="v">{{ v }}</option>
|
||||
</optgroup>
|
||||
</MkSelect>
|
||||
</template>
|
||||
<template v-else-if="value.action === 'callAiScript'">
|
||||
<MkInput v-model:value="value.fn"><span>{{ $t('_pages.blocks._button._action._callAiScript.functionName') }}</span></MkInput>
|
||||
<MkInput v-model:value="value.fn"><span>{{ $ts._pages.blocks._button._action._callAiScript.functionName }}</span></MkInput>
|
||||
</template>
|
||||
</section>
|
||||
</XContainer>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<template>
|
||||
<XContainer @remove="() => $emit('remove')" :draggable="true">
|
||||
<template #header><Fa :icon="faPaintBrush"/> {{ $t('_pages.blocks.canvas') }}</template>
|
||||
<template #header><Fa :icon="faPaintBrush"/> {{ $ts._pages.blocks.canvas }}</template>
|
||||
|
||||
<section style="padding: 0 16px 0 16px;">
|
||||
<MkInput v-model:value="value.name"><template #prefix><Fa :icon="faMagic"/></template><span>{{ $t('_pages.blocks._canvas.id') }}</span></MkInput>
|
||||
<MkInput v-model:value="value.width" type="number"><span>{{ $t('_pages.blocks._canvas.width') }}</span><template #suffix>px</template></MkInput>
|
||||
<MkInput v-model:value="value.height" type="number"><span>{{ $t('_pages.blocks._canvas.height') }}</span><template #suffix>px</template></MkInput>
|
||||
<MkInput v-model:value="value.name"><template #prefix><Fa :icon="faMagic"/></template><span>{{ $ts._pages.blocks._canvas.id }}</span></MkInput>
|
||||
<MkInput v-model:value="value.width" type="number"><span>{{ $ts._pages.blocks._canvas.width }}</span><template #suffix>px</template></MkInput>
|
||||
<MkInput v-model:value="value.height" type="number"><span>{{ $ts._pages.blocks._canvas.height }}</span><template #suffix>px</template></MkInput>
|
||||
</section>
|
||||
</XContainer>
|
||||
</template>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<template>
|
||||
<XContainer @remove="() => $emit('remove')" :draggable="true">
|
||||
<template #header><Fa :icon="faBolt"/> {{ $t('_pages.blocks.counter') }}</template>
|
||||
<template #header><Fa :icon="faBolt"/> {{ $ts._pages.blocks.counter }}</template>
|
||||
|
||||
<section style="padding: 0 16px 0 16px;">
|
||||
<MkInput v-model:value="value.name"><template #prefix><Fa :icon="faMagic"/></template><span>{{ $t('_pages.blocks._counter.name') }}</span></MkInput>
|
||||
<MkInput v-model:value="value.text"><span>{{ $t('_pages.blocks._counter.text') }}</span></MkInput>
|
||||
<MkInput v-model:value="value.inc" type="number"><span>{{ $t('_pages.blocks._counter.inc') }}</span></MkInput>
|
||||
<MkInput v-model:value="value.name"><template #prefix><Fa :icon="faMagic"/></template><span>{{ $ts._pages.blocks._counter.name }}</span></MkInput>
|
||||
<MkInput v-model:value="value.text"><span>{{ $ts._pages.blocks._counter.text }}</span></MkInput>
|
||||
<MkInput v-model:value="value.inc" type="number"><span>{{ $ts._pages.blocks._counter.inc }}</span></MkInput>
|
||||
</section>
|
||||
</XContainer>
|
||||
</template>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<XContainer @remove="() => $emit('remove')" :draggable="true">
|
||||
<template #header><Fa :icon="faQuestion"/> {{ $t('_pages.blocks.if') }}</template>
|
||||
<template #header><Fa :icon="faQuestion"/> {{ $ts._pages.blocks.if }}</template>
|
||||
<template #func>
|
||||
<button @click="add()" class="_button">
|
||||
<Fa :icon="faPlus"/>
|
||||
|
@ -9,12 +9,12 @@
|
|||
|
||||
<section class="romcojzs">
|
||||
<MkSelect v-model:value="value.var">
|
||||
<template #label>{{ $t('_pages.blocks._if.variable') }}</template>
|
||||
<template #label>{{ $ts._pages.blocks._if.variable }}</template>
|
||||
<option v-for="v in hpml.getVarsByType('boolean')" :value="v.name">{{ v.name }}</option>
|
||||
<optgroup :label="$t('_pages.script.pageVariables')">
|
||||
<optgroup :label="$ts._pages.script.pageVariables">
|
||||
<option v-for="v in hpml.getPageVarsByType('boolean')" :value="v">{{ v }}</option>
|
||||
</optgroup>
|
||||
<optgroup :label="$t('_pages.script.enviromentVariables')">
|
||||
<optgroup :label="$ts._pages.script.enviromentVariables">
|
||||
<option v-for="v in hpml.getEnvVarsByType('boolean')" :value="v">{{ v }}</option>
|
||||
</optgroup>
|
||||
</MkSelect>
|
||||
|
@ -64,7 +64,7 @@ export default defineComponent({
|
|||
async add() {
|
||||
const { canceled, result: type } = await os.dialog({
|
||||
type: null,
|
||||
title: this.$t('_pages.chooseBlock'),
|
||||
title: this.$ts._pages.chooseBlock,
|
||||
select: {
|
||||
groupedItems: this.getPageBlockList()
|
||||
},
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<XContainer @remove="() => $emit('remove')" :draggable="true">
|
||||
<template #header><Fa :icon="faImage"/> {{ $t('_pages.blocks.image') }}</template>
|
||||
<template #header><Fa :icon="faImage"/> {{ $ts._pages.blocks.image }}</template>
|
||||
<template #func>
|
||||
<button @click="choose()">
|
||||
<Fa :icon="faFolderOpen"/>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<template>
|
||||
<XContainer @remove="() => $emit('remove')" :draggable="true">
|
||||
<template #header><Fa :icon="faStickyNote"/> {{ $t('_pages.blocks.note') }}</template>
|
||||
<template #header><Fa :icon="faStickyNote"/> {{ $ts._pages.blocks.note }}</template>
|
||||
|
||||
<section style="padding: 0 16px 0 16px;">
|
||||
<MkInput v-model:value="id">
|
||||
<span>{{ $t('_pages.blocks._note.id') }}</span>
|
||||
<template #desc>{{ $t('_pages.blocks._note.idDescription') }}</template>
|
||||
<span>{{ $ts._pages.blocks._note.id }}</span>
|
||||
<template #desc>{{ $ts._pages.blocks._note.idDescription }}</template>
|
||||
</MkInput>
|
||||
<MkSwitch v-model:value="value.detailed"><span>{{ $t('_pages.blocks._note.detailed') }}</span></MkSwitch>
|
||||
<MkSwitch v-model:value="value.detailed"><span>{{ $ts._pages.blocks._note.detailed }}</span></MkSwitch>
|
||||
|
||||
<XNote v-if="note" v-model:note="note" :key="note.id + ':' + (value.detailed ? 'detailed' : 'normal')" :detail="value.detailed" style="margin-bottom: 16px;"/>
|
||||
</section>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<template>
|
||||
<XContainer @remove="() => $emit('remove')" :draggable="true">
|
||||
<template #header><Fa :icon="faBolt"/> {{ $t('_pages.blocks.numberInput') }}</template>
|
||||
<template #header><Fa :icon="faBolt"/> {{ $ts._pages.blocks.numberInput }}</template>
|
||||
|
||||
<section style="padding: 0 16px 0 16px;">
|
||||
<MkInput v-model:value="value.name"><template #prefix><Fa :icon="faMagic"/></template><span>{{ $t('_pages.blocks._numberInput.name') }}</span></MkInput>
|
||||
<MkInput v-model:value="value.text"><span>{{ $t('_pages.blocks._numberInput.text') }}</span></MkInput>
|
||||
<MkInput v-model:value="value.default" type="number"><span>{{ $t('_pages.blocks._numberInput.default') }}</span></MkInput>
|
||||
<MkInput v-model:value="value.name"><template #prefix><Fa :icon="faMagic"/></template><span>{{ $ts._pages.blocks._numberInput.name }}</span></MkInput>
|
||||
<MkInput v-model:value="value.text"><span>{{ $ts._pages.blocks._numberInput.text }}</span></MkInput>
|
||||
<MkInput v-model:value="value.default" type="number"><span>{{ $ts._pages.blocks._numberInput.default }}</span></MkInput>
|
||||
</section>
|
||||
</XContainer>
|
||||
</template>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<template>
|
||||
<XContainer @remove="() => $emit('remove')" :draggable="true">
|
||||
<template #header><Fa :icon="faPaperPlane"/> {{ $t('_pages.blocks.post') }}</template>
|
||||
<template #header><Fa :icon="faPaperPlane"/> {{ $ts._pages.blocks.post }}</template>
|
||||
|
||||
<section style="padding: 16px;">
|
||||
<MkTextarea v-model:value="value.text">{{ $t('_pages.blocks._post.text') }}</MkTextarea>
|
||||
<MkSwitch v-model:value="value.attachCanvasImage"><span>{{ $t('_pages.blocks._post.attachCanvasImage') }}</span></MkSwitch>
|
||||
<MkInput v-if="value.attachCanvasImage" v-model:value="value.canvasId"><span>{{ $t('_pages.blocks._post.canvasId') }}</span></MkInput>
|
||||
<MkTextarea v-model:value="value.text">{{ $ts._pages.blocks._post.text }}</MkTextarea>
|
||||
<MkSwitch v-model:value="value.attachCanvasImage"><span>{{ $ts._pages.blocks._post.attachCanvasImage }}</span></MkSwitch>
|
||||
<MkInput v-if="value.attachCanvasImage" v-model:value="value.canvasId"><span>{{ $ts._pages.blocks._post.canvasId }}</span></MkInput>
|
||||
</section>
|
||||
</XContainer>
|
||||
</template>
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<template>
|
||||
<XContainer @remove="() => $emit('remove')" :draggable="true">
|
||||
<template #header><Fa :icon="faBolt"/> {{ $t('_pages.blocks.radioButton') }}</template>
|
||||
<template #header><Fa :icon="faBolt"/> {{ $ts._pages.blocks.radioButton }}</template>
|
||||
|
||||
<section style="padding: 0 16px 16px 16px;">
|
||||
<MkInput v-model:value="value.name"><template #prefix><Fa :icon="faMagic"/></template><span>{{ $t('_pages.blocks._radioButton.name') }}</span></MkInput>
|
||||
<MkInput v-model:value="value.title"><span>{{ $t('_pages.blocks._radioButton.title') }}</span></MkInput>
|
||||
<MkTextarea v-model:value="values"><span>{{ $t('_pages.blocks._radioButton.values') }}</span></MkTextarea>
|
||||
<MkInput v-model:value="value.default"><span>{{ $t('_pages.blocks._radioButton.default') }}</span></MkInput>
|
||||
<MkInput v-model:value="value.name"><template #prefix><Fa :icon="faMagic"/></template><span>{{ $ts._pages.blocks._radioButton.name }}</span></MkInput>
|
||||
<MkInput v-model:value="value.title"><span>{{ $ts._pages.blocks._radioButton.title }}</span></MkInput>
|
||||
<MkTextarea v-model:value="values"><span>{{ $ts._pages.blocks._radioButton.values }}</span></MkTextarea>
|
||||
<MkInput v-model:value="value.default"><span>{{ $ts._pages.blocks._radioButton.default }}</span></MkInput>
|
||||
</section>
|
||||
</XContainer>
|
||||
</template>
|
||||
|
|
|
@ -75,7 +75,7 @@ export default defineComponent({
|
|||
async add() {
|
||||
const { canceled, result: type } = await os.dialog({
|
||||
type: null,
|
||||
title: this.$t('_pages.chooseBlock'),
|
||||
title: this.$ts._pages.chooseBlock,
|
||||
select: {
|
||||
groupedItems: this.getPageBlockList()
|
||||
},
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<template>
|
||||
<XContainer @remove="() => $emit('remove')" :draggable="true">
|
||||
<template #header><Fa :icon="faBolt"/> {{ $t('_pages.blocks.switch') }}</template>
|
||||
<template #header><Fa :icon="faBolt"/> {{ $ts._pages.blocks.switch }}</template>
|
||||
|
||||
<section class="kjuadyyj">
|
||||
<MkInput v-model:value="value.name"><template #prefix><Fa :icon="faMagic"/></template><span>{{ $t('_pages.blocks._switch.name') }}</span></MkInput>
|
||||
<MkInput v-model:value="value.text"><span>{{ $t('_pages.blocks._switch.text') }}</span></MkInput>
|
||||
<MkSwitch v-model:value="value.default"><span>{{ $t('_pages.blocks._switch.default') }}</span></MkSwitch>
|
||||
<MkInput v-model:value="value.name"><template #prefix><Fa :icon="faMagic"/></template><span>{{ $ts._pages.blocks._switch.name }}</span></MkInput>
|
||||
<MkInput v-model:value="value.text"><span>{{ $ts._pages.blocks._switch.text }}</span></MkInput>
|
||||
<MkSwitch v-model:value="value.default"><span>{{ $ts._pages.blocks._switch.default }}</span></MkSwitch>
|
||||
</section>
|
||||
</XContainer>
|
||||
</template>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<template>
|
||||
<XContainer @remove="() => $emit('remove')" :draggable="true">
|
||||
<template #header><Fa :icon="faBolt"/> {{ $t('_pages.blocks.textInput') }}</template>
|
||||
<template #header><Fa :icon="faBolt"/> {{ $ts._pages.blocks.textInput }}</template>
|
||||
|
||||
<section style="padding: 0 16px 0 16px;">
|
||||
<MkInput v-model:value="value.name"><template #prefix><Fa :icon="faMagic"/></template><span>{{ $t('_pages.blocks._textInput.name') }}</span></MkInput>
|
||||
<MkInput v-model:value="value.text"><span>{{ $t('_pages.blocks._textInput.text') }}</span></MkInput>
|
||||
<MkInput v-model:value="value.default" type="text"><span>{{ $t('_pages.blocks._textInput.default') }}</span></MkInput>
|
||||
<MkInput v-model:value="value.name"><template #prefix><Fa :icon="faMagic"/></template><span>{{ $ts._pages.blocks._textInput.name }}</span></MkInput>
|
||||
<MkInput v-model:value="value.text"><span>{{ $ts._pages.blocks._textInput.text }}</span></MkInput>
|
||||
<MkInput v-model:value="value.default" type="text"><span>{{ $ts._pages.blocks._textInput.default }}</span></MkInput>
|
||||
</section>
|
||||
</XContainer>
|
||||
</template>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<XContainer @remove="() => $emit('remove')" :draggable="true">
|
||||
<template #header><Fa :icon="faAlignLeft"/> {{ $t('_pages.blocks.text') }}</template>
|
||||
<template #header><Fa :icon="faAlignLeft"/> {{ $ts._pages.blocks.text }}</template>
|
||||
|
||||
<section class="vckmsadr">
|
||||
<textarea v-model="value.text"></textarea>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<template>
|
||||
<XContainer @remove="() => $emit('remove')" :draggable="true">
|
||||
<template #header><Fa :icon="faBolt"/> {{ $t('_pages.blocks.textareaInput') }}</template>
|
||||
<template #header><Fa :icon="faBolt"/> {{ $ts._pages.blocks.textareaInput }}</template>
|
||||
|
||||
<section style="padding: 0 16px 16px 16px;">
|
||||
<MkInput v-model:value="value.name"><template #prefix><Fa :icon="faMagic"/></template><span>{{ $t('_pages.blocks._textareaInput.name') }}</span></MkInput>
|
||||
<MkInput v-model:value="value.text"><span>{{ $t('_pages.blocks._textareaInput.text') }}</span></MkInput>
|
||||
<MkTextarea v-model:value="value.default"><span>{{ $t('_pages.blocks._textareaInput.default') }}</span></MkTextarea>
|
||||
<MkInput v-model:value="value.name"><template #prefix><Fa :icon="faMagic"/></template><span>{{ $ts._pages.blocks._textareaInput.name }}</span></MkInput>
|
||||
<MkInput v-model:value="value.text"><span>{{ $ts._pages.blocks._textareaInput.text }}</span></MkInput>
|
||||
<MkTextarea v-model:value="value.default"><span>{{ $ts._pages.blocks._textareaInput.default }}</span></MkTextarea>
|
||||
</section>
|
||||
</XContainer>
|
||||
</template>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<XContainer @remove="() => $emit('remove')" :draggable="true">
|
||||
<template #header><Fa :icon="faAlignLeft"/> {{ $t('_pages.blocks.textarea') }}</template>
|
||||
<template #header><Fa :icon="faAlignLeft"/> {{ $ts._pages.blocks.textarea }}</template>
|
||||
|
||||
<section class="ihymsbbe">
|
||||
<textarea v-model="value.text"></textarea>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
</template>
|
||||
|
||||
<section v-if="value.type === null" class="pbglfege" @click="changeType()">
|
||||
{{ $t('_pages.script.emptySlot') }}
|
||||
{{ $ts._pages.script.emptySlot }}
|
||||
</section>
|
||||
<section v-else-if="value.type === 'text'" class="tbwccoaw">
|
||||
<input v-model="value.value"/>
|
||||
|
@ -17,7 +17,7 @@
|
|||
<textarea v-model="value.value"></textarea>
|
||||
</section>
|
||||
<section v-else-if="value.type === 'textList'" class="tbwccoaw">
|
||||
<textarea v-model="value.value" :placeholder="$t('_pages.script.blocks._textList.info')"></textarea>
|
||||
<textarea v-model="value.value" :placeholder="$ts._pages.script.blocks._textList.info"></textarea>
|
||||
</section>
|
||||
<section v-else-if="value.type === 'number'" class="tbwccoaw">
|
||||
<input v-model="value.value" type="number"/>
|
||||
|
@ -25,13 +25,13 @@
|
|||
<section v-else-if="value.type === 'ref'" class="hpdwcrvs">
|
||||
<select v-model="value.value">
|
||||
<option v-for="v in hpml.getVarsByType(getExpectedType ? getExpectedType() : null).filter(x => x.name !== name)" :value="v.name">{{ v.name }}</option>
|
||||
<optgroup :label="$t('_pages.script.argVariables')">
|
||||
<optgroup :label="$ts._pages.script.argVariables">
|
||||
<option v-for="v in fnSlots" :value="v.name">{{ v.name }}</option>
|
||||
</optgroup>
|
||||
<optgroup :label="$t('_pages.script.pageVariables')">
|
||||
<optgroup :label="$ts._pages.script.pageVariables">
|
||||
<option v-for="v in hpml.getPageVarsByType(getExpectedType ? getExpectedType() : null)" :value="v">{{ v }}</option>
|
||||
</optgroup>
|
||||
<optgroup :label="$t('_pages.script.enviromentVariables')">
|
||||
<optgroup :label="$ts._pages.script.enviromentVariables">
|
||||
<option v-for="v in hpml.getEnvVarsByType(getExpectedType ? getExpectedType() : null)" :value="v">{{ v }}</option>
|
||||
</optgroup>
|
||||
</select>
|
||||
|
@ -41,7 +41,7 @@
|
|||
</section>
|
||||
<section v-else-if="value.type === 'fn'" class="" style="padding:0 16px 16px 16px;">
|
||||
<MkTextarea v-model:value="slots">
|
||||
<span>{{ $t('_pages.script.blocks._fn.slots') }}</span>
|
||||
<span>{{ $ts._pages.script.blocks._fn.slots }}</span>
|
||||
<template #desc>{{ $t('_pages.script.blocks._fn.slots-info') }}</template>
|
||||
</MkTextarea>
|
||||
<XV v-if="value.value.expression" v-model:value="value.value.expression" :title="$t(`_pages.script.blocks._fn.arg1`)" :get-expected-type="() => null" :hpml="hpml" :fn-slots="value.value.slots" :name="name"/>
|
||||
|
@ -214,7 +214,7 @@ export default defineComponent({
|
|||
async changeType() {
|
||||
const { canceled, result: type } = await os.dialog({
|
||||
type: null,
|
||||
title: this.$t('_pages.selectType'),
|
||||
title: this.$ts._pages.selectType,
|
||||
select: {
|
||||
groupedItems: this.getScriptBlockList(this.getExpectedType ? this.getExpectedType() : null)
|
||||
},
|
||||
|
|
|
@ -1,52 +1,52 @@
|
|||
<template>
|
||||
<div class="_section">
|
||||
<div class="_content">
|
||||
<MkA class="view" v-if="pageId" :to="`/@${ author.username }/pages/${ currentName }`"><Fa :icon="faExternalLinkSquareAlt"/> {{ $t('_pages.viewPage') }}</MkA>
|
||||
<MkA class="view" v-if="pageId" :to="`/@${ author.username }/pages/${ currentName }`"><Fa :icon="faExternalLinkSquareAlt"/> {{ $ts._pages.viewPage }}</MkA>
|
||||
|
||||
<div class="buttons" style="margin: 16px 0;">
|
||||
<MkButton inline @click="save" primary class="save"><Fa :icon="faSave"/> {{ $t('save') }}</MkButton>
|
||||
<MkButton inline @click="duplicate" class="duplicate" v-if="pageId"><Fa :icon="faCopy"/> {{ $t('duplicate') }}</MkButton>
|
||||
<MkButton inline @click="del" class="delete" v-if="pageId"><Fa :icon="faTrashAlt"/> {{ $t('delete') }}</MkButton>
|
||||
<MkButton inline @click="save" primary class="save"><Fa :icon="faSave"/> {{ $ts.save }}</MkButton>
|
||||
<MkButton inline @click="duplicate" class="duplicate" v-if="pageId"><Fa :icon="faCopy"/> {{ $ts.duplicate }}</MkButton>
|
||||
<MkButton inline @click="del" class="delete" v-if="pageId"><Fa :icon="faTrashAlt"/> {{ $ts.delete }}</MkButton>
|
||||
</div>
|
||||
|
||||
<MkContainer :body-togglable="true" :expanded="true" class="_vMargin">
|
||||
<template #header><Fa :icon="faCog"/> {{ $t('_pages.pageSetting') }}</template>
|
||||
<template #header><Fa :icon="faCog"/> {{ $ts._pages.pageSetting }}</template>
|
||||
<div class="_section">
|
||||
<MkInput v-model:value="title">
|
||||
<span>{{ $t('_pages.title') }}</span>
|
||||
<span>{{ $ts._pages.title }}</span>
|
||||
</MkInput>
|
||||
|
||||
<MkInput v-model:value="summary">
|
||||
<span>{{ $t('_pages.summary') }}</span>
|
||||
<span>{{ $ts._pages.summary }}</span>
|
||||
</MkInput>
|
||||
|
||||
<MkInput v-model:value="name">
|
||||
<template #prefix>{{ url }}/@{{ author.username }}/pages/</template>
|
||||
<span>{{ $t('_pages.url') }}</span>
|
||||
<span>{{ $ts._pages.url }}</span>
|
||||
</MkInput>
|
||||
|
||||
<MkSwitch v-model:value="alignCenter">{{ $t('_pages.alignCenter') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="alignCenter">{{ $ts._pages.alignCenter }}</MkSwitch>
|
||||
|
||||
<MkSelect v-model:value="font">
|
||||
<template #label>{{ $t('_pages.font') }}</template>
|
||||
<option value="serif">{{ $t('_pages.fontSerif') }}</option>
|
||||
<option value="sans-serif">{{ $t('_pages.fontSansSerif') }}</option>
|
||||
<template #label>{{ $ts._pages.font }}</template>
|
||||
<option value="serif">{{ $ts._pages.fontSerif }}</option>
|
||||
<option value="sans-serif">{{ $ts._pages.fontSansSerif }}</option>
|
||||
</MkSelect>
|
||||
|
||||
<MkSwitch v-model:value="hideTitleWhenPinned">{{ $t('_pages.hideTitleWhenPinned') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="hideTitleWhenPinned">{{ $ts._pages.hideTitleWhenPinned }}</MkSwitch>
|
||||
|
||||
<div class="eyeCatch">
|
||||
<MkButton v-if="eyeCatchingImageId == null && !readonly" @click="setEyeCatchingImage"><Fa :icon="faPlus"/> {{ $t('_pages.eyeCatchingImageSet') }}</MkButton>
|
||||
<MkButton v-if="eyeCatchingImageId == null && !readonly" @click="setEyeCatchingImage"><Fa :icon="faPlus"/> {{ $ts._pages.eyeCatchingImageSet }}</MkButton>
|
||||
<div v-else-if="eyeCatchingImage">
|
||||
<img :src="eyeCatchingImage.url" :alt="eyeCatchingImage.name" style="max-width: 100%;"/>
|
||||
<MkButton @click="removeEyeCatchingImage()" v-if="!readonly"><Fa :icon="faTrashAlt"/> {{ $t('_pages.eyeCatchingImageRemove') }}</MkButton>
|
||||
<MkButton @click="removeEyeCatchingImage()" v-if="!readonly"><Fa :icon="faTrashAlt"/> {{ $ts._pages.eyeCatchingImageRemove }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</MkContainer>
|
||||
|
||||
<MkContainer :body-togglable="true" :expanded="true" class="_vMargin">
|
||||
<template #header><Fa :icon="faStickyNote"/> {{ $t('_pages.contents') }}</template>
|
||||
<template #header><Fa :icon="faStickyNote"/> {{ $ts._pages.contents }}</template>
|
||||
<div class="_section">
|
||||
<XBlocks class="content" v-model:value="content" :hpml="hpml"/>
|
||||
|
||||
|
@ -55,7 +55,7 @@
|
|||
</MkContainer>
|
||||
|
||||
<MkContainer :body-togglable="true" class="_vMargin">
|
||||
<template #header><Fa :icon="faMagic"/> {{ $t('_pages.variables') }}</template>
|
||||
<template #header><Fa :icon="faMagic"/> {{ $ts._pages.variables }}</template>
|
||||
<div class="qmuvgica">
|
||||
<XDraggable tag="div" class="variables" v-show="variables.length > 0" v-model="variables" item-key="name" handle=".drag-handle" :group="{ name: 'variables' }" animation="150" swap-threshold="0.5">
|
||||
<template #item="{element}">
|
||||
|
@ -76,7 +76,7 @@
|
|||
</MkContainer>
|
||||
|
||||
<MkContainer :body-togglable="true" :expanded="true" class="_vMargin">
|
||||
<template #header><Fa :icon="faCode"/> {{ $t('script') }}</template>
|
||||
<template #header><Fa :icon="faCode"/> {{ $ts.script }}</template>
|
||||
<div>
|
||||
<MkTextarea class="_code" v-model:value="script"/>
|
||||
</div>
|
||||
|
@ -135,10 +135,10 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: computed(() => this.initPageId ? {
|
||||
title: this.$t('_pages.editPage'),
|
||||
title: this.$ts._pages.editPage,
|
||||
icon: faPencilAlt,
|
||||
} : {
|
||||
title: this.$t('_pages.newPage'),
|
||||
title: this.$ts._pages.newPage,
|
||||
icon: faPencilAlt,
|
||||
}),
|
||||
author: this.$i,
|
||||
|
@ -254,14 +254,14 @@ export default defineComponent({
|
|||
if (err.info.param == 'name') {
|
||||
os.dialog({
|
||||
type: 'error',
|
||||
title: this.$t('_pages.invalidNameTitle'),
|
||||
text: this.$t('_pages.invalidNameText')
|
||||
title: this.$ts._pages.invalidNameTitle,
|
||||
text: this.$ts._pages.invalidNameText
|
||||
});
|
||||
}
|
||||
} else if (err.code == 'NAME_ALREADY_EXISTS') {
|
||||
os.dialog({
|
||||
type: 'error',
|
||||
text: this.$t('_pages.nameAlreadyExists')
|
||||
text: this.$ts._pages.nameAlreadyExists
|
||||
});
|
||||
}
|
||||
};
|
||||
|
@ -273,7 +273,7 @@ export default defineComponent({
|
|||
this.currentName = this.name.trim();
|
||||
os.dialog({
|
||||
type: 'success',
|
||||
text: this.$t('_pages.updated')
|
||||
text: this.$ts._pages.updated
|
||||
});
|
||||
}).catch(onError);
|
||||
} else {
|
||||
|
@ -283,7 +283,7 @@ export default defineComponent({
|
|||
this.currentName = this.name.trim();
|
||||
os.dialog({
|
||||
type: 'success',
|
||||
text: this.$t('_pages.created')
|
||||
text: this.$ts._pages.created
|
||||
});
|
||||
this.$router.push(`/pages/edit/${this.pageId}`);
|
||||
}).catch(onError);
|
||||
|
@ -302,7 +302,7 @@ export default defineComponent({
|
|||
}).then(() => {
|
||||
os.dialog({
|
||||
type: 'success',
|
||||
text: this.$t('_pages.deleted')
|
||||
text: this.$ts._pages.deleted
|
||||
});
|
||||
this.$router.push(`/pages`);
|
||||
});
|
||||
|
@ -317,7 +317,7 @@ export default defineComponent({
|
|||
this.currentName = this.name.trim();
|
||||
os.dialog({
|
||||
type: 'success',
|
||||
text: this.$t('_pages.created')
|
||||
text: this.$ts._pages.created
|
||||
});
|
||||
this.$router.push(`/pages/edit/${this.pageId}`);
|
||||
});
|
||||
|
@ -326,7 +326,7 @@ export default defineComponent({
|
|||
async add() {
|
||||
const { canceled, result: type } = await os.dialog({
|
||||
type: null,
|
||||
title: this.$t('_pages.chooseBlock'),
|
||||
title: this.$ts._pages.chooseBlock,
|
||||
select: {
|
||||
groupedItems: this.getPageBlockList()
|
||||
},
|
||||
|
@ -340,7 +340,7 @@ export default defineComponent({
|
|||
|
||||
async addVariable() {
|
||||
let { canceled, result: name } = await os.dialog({
|
||||
title: this.$t('_pages.enterVariableName'),
|
||||
title: this.$ts._pages.enterVariableName,
|
||||
input: {
|
||||
type: 'text',
|
||||
},
|
||||
|
@ -353,7 +353,7 @@ export default defineComponent({
|
|||
if (this.hpml.isUsedName(name)) {
|
||||
os.dialog({
|
||||
type: 'error',
|
||||
text: this.$t('_pages.variableNameIsAlreadyUsed')
|
||||
text: this.$ts._pages.variableNameIsAlreadyUsed
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
@ -368,31 +368,31 @@ export default defineComponent({
|
|||
|
||||
getPageBlockList() {
|
||||
return [{
|
||||
label: this.$t('_pages.contentBlocks'),
|
||||
label: this.$ts._pages.contentBlocks,
|
||||
items: [
|
||||
{ value: 'section', text: this.$t('_pages.blocks.section') },
|
||||
{ value: 'text', text: this.$t('_pages.blocks.text') },
|
||||
{ value: 'image', text: this.$t('_pages.blocks.image') },
|
||||
{ value: 'textarea', text: this.$t('_pages.blocks.textarea') },
|
||||
{ value: 'note', text: this.$t('_pages.blocks.note') },
|
||||
{ value: 'canvas', text: this.$t('_pages.blocks.canvas') },
|
||||
{ value: 'section', text: this.$ts._pages.blocks.section },
|
||||
{ value: 'text', text: this.$ts._pages.blocks.text },
|
||||
{ value: 'image', text: this.$ts._pages.blocks.image },
|
||||
{ value: 'textarea', text: this.$ts._pages.blocks.textarea },
|
||||
{ value: 'note', text: this.$ts._pages.blocks.note },
|
||||
{ value: 'canvas', text: this.$ts._pages.blocks.canvas },
|
||||
]
|
||||
}, {
|
||||
label: this.$t('_pages.inputBlocks'),
|
||||
label: this.$ts._pages.inputBlocks,
|
||||
items: [
|
||||
{ value: 'button', text: this.$t('_pages.blocks.button') },
|
||||
{ value: 'radioButton', text: this.$t('_pages.blocks.radioButton') },
|
||||
{ value: 'textInput', text: this.$t('_pages.blocks.textInput') },
|
||||
{ value: 'textareaInput', text: this.$t('_pages.blocks.textareaInput') },
|
||||
{ value: 'numberInput', text: this.$t('_pages.blocks.numberInput') },
|
||||
{ value: 'switch', text: this.$t('_pages.blocks.switch') },
|
||||
{ value: 'counter', text: this.$t('_pages.blocks.counter') }
|
||||
{ value: 'button', text: this.$ts._pages.blocks.button },
|
||||
{ value: 'radioButton', text: this.$ts._pages.blocks.radioButton },
|
||||
{ value: 'textInput', text: this.$ts._pages.blocks.textInput },
|
||||
{ value: 'textareaInput', text: this.$ts._pages.blocks.textareaInput },
|
||||
{ value: 'numberInput', text: this.$ts._pages.blocks.numberInput },
|
||||
{ value: 'switch', text: this.$ts._pages.blocks.switch },
|
||||
{ value: 'counter', text: this.$ts._pages.blocks.counter }
|
||||
]
|
||||
}, {
|
||||
label: this.$t('_pages.specialBlocks'),
|
||||
label: this.$ts._pages.specialBlocks,
|
||||
items: [
|
||||
{ value: 'if', text: this.$t('_pages.blocks.if') },
|
||||
{ value: 'post', text: this.$t('_pages.blocks.post') }
|
||||
{ value: 'if', text: this.$ts._pages.blocks.if },
|
||||
{ value: 'post', text: this.$ts._pages.blocks.post }
|
||||
]
|
||||
}];
|
||||
},
|
||||
|
|
|
@ -13,18 +13,18 @@
|
|||
</div>
|
||||
<div class="_section like">
|
||||
<div class="_content">
|
||||
<button class="_button" @click="unlike()" v-if="page.isLiked" :title="$t('_pages.unlike')"><Fa :icon="faHeartS"/></button>
|
||||
<button class="_button" @click="like()" v-else :title="$t('_pages.like')"><Fa :icon="faHeartR"/></button>
|
||||
<button class="_button" @click="unlike()" v-if="page.isLiked" :title="$ts._pages.unlike"><Fa :icon="faHeartS"/></button>
|
||||
<button class="_button" @click="like()" v-else :title="$ts._pages.like"><Fa :icon="faHeartR"/></button>
|
||||
<span class="count" v-if="page.likedCount > 0">{{ page.likedCount }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="_section links">
|
||||
<div class="_content">
|
||||
<MkA :to="`./${page.name}/view-source`" class="link">{{ $t('_pages.viewSource') }}</MkA>
|
||||
<MkA :to="`./${page.name}/view-source`" class="link">{{ $ts._pages.viewSource }}</MkA>
|
||||
<template v-if="$i && $i.id === page.userId">
|
||||
<MkA :to="`/pages/edit/${page.id}`" class="link">{{ $t('_pages.editThisPage') }}</MkA>
|
||||
<button v-if="$i.pinnedPageId === page.id" @click="pin(false)" class="link _textButton">{{ $t('unpin') }}</button>
|
||||
<button v-else @click="pin(true)" class="link _textButton">{{ $t('pin') }}</button>
|
||||
<MkA :to="`/pages/edit/${page.id}`" class="link">{{ $ts._pages.editThisPage }}</MkA>
|
||||
<button v-if="$i.pinnedPageId === page.id" @click="pin(false)" class="link _textButton">{{ $ts.unpin }}</button>
|
||||
<button v-else @click="pin(true)" class="link _textButton">{{ $ts.pin }}</button>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<template>
|
||||
<div>
|
||||
<MkTab v-model:value="tab" v-if="$i">
|
||||
<option value="featured"><Fa :icon="faFireAlt"/> {{ $t('_pages.featured') }}</option>
|
||||
<option value="my"><Fa :icon="faEdit"/> {{ $t('_pages.my') }}</option>
|
||||
<option value="liked"><Fa :icon="faHeart"/> {{ $t('_pages.liked') }}</option>
|
||||
<option value="featured"><Fa :icon="faFireAlt"/> {{ $ts._pages.featured }}</option>
|
||||
<option value="my"><Fa :icon="faEdit"/> {{ $ts._pages.my }}</option>
|
||||
<option value="liked"><Fa :icon="faHeart"/> {{ $ts._pages.liked }}</option>
|
||||
</MkTab>
|
||||
|
||||
<div class="_section">
|
||||
|
@ -45,7 +45,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('pages'),
|
||||
title: this.$ts.pages,
|
||||
icon: faStickyNote,
|
||||
action: {
|
||||
icon: faPlus,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div class="xqnhankfuuilcwvhgsopeqncafzsquya">
|
||||
<header><b><MkA :to="userPage(blackUser)"><MkUserName :user="blackUser"/></MkA></b>({{ $t('_reversi.black') }}) vs <b><MkA :to="userPage(whiteUser)"><MkUserName :user="whiteUser"/></MkA></b>({{ $t('_reversi.white') }})</header>
|
||||
<header><b><MkA :to="userPage(blackUser)"><MkUserName :user="blackUser"/></MkA></b>({{ $ts._reversi.black }}) vs <b><MkA :to="userPage(whiteUser)"><MkUserName :user="whiteUser"/></MkA></b>({{ $ts._reversi.white }})</header>
|
||||
|
||||
<div style="overflow: hidden; line-height: 28px;">
|
||||
<p class="turn" v-if="!iAmPlayer && !game.isEnded">
|
||||
|
@ -10,14 +10,14 @@
|
|||
<p class="turn" v-if="logPos != logs.length">
|
||||
<Mfm :key="'past-turn-of:' + turnUser().name" :text="$t('_reversi.pastTurnOf', { name: turnUser().name })" :plain="true" :custom-emojis="turnUser().emojis"/>
|
||||
</p>
|
||||
<p class="turn1" v-if="iAmPlayer && !game.isEnded && !isMyTurn()">{{ $t('_reversi.opponentTurn') }}<MkEllipsis/></p>
|
||||
<p class="turn2" v-if="iAmPlayer && !game.isEnded && isMyTurn()" style="animation: tada 1s linear infinite both;">{{ $t('_reversi.myTurn') }}</p>
|
||||
<p class="turn1" v-if="iAmPlayer && !game.isEnded && !isMyTurn()">{{ $ts._reversi.opponentTurn }}<MkEllipsis/></p>
|
||||
<p class="turn2" v-if="iAmPlayer && !game.isEnded && isMyTurn()" style="animation: tada 1s linear infinite both;">{{ $ts._reversi.myTurn }}</p>
|
||||
<p class="result" v-if="game.isEnded && logPos == logs.length">
|
||||
<template v-if="game.winner">
|
||||
<Mfm :key="'won'" :text="$t('_reversi.won', { name: game.winner.name })" :plain="true" :custom-emojis="game.winner.emojis"/>
|
||||
<span v-if="game.surrendered != null"> ({{ $t('_reversi.surrendered') }})</span>
|
||||
<span v-if="game.surrendered != null"> ({{ $ts._reversi.surrendered }})</span>
|
||||
</template>
|
||||
<template v-else>{{ $t('_reversi.drawn') }}</template>
|
||||
<template v-else>{{ $ts._reversi.drawn }}</template>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
@ -54,10 +54,10 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<p class="status"><b>{{ $t('_reversi.turnCount', { count: logPos }) }}</b> {{ $t('_reversi.black') }}:{{ o.blackCount }} {{ $t('_reversi.white') }}:{{ o.whiteCount }} {{ $t('_reversi.total') }}:{{ o.blackCount + o.whiteCount }}</p>
|
||||
<p class="status"><b>{{ $t('_reversi.turnCount', { count: logPos }) }}</b> {{ $ts._reversi.black }}:{{ o.blackCount }} {{ $ts._reversi.white }}:{{ o.whiteCount }} {{ $ts._reversi.total }}:{{ o.blackCount + o.whiteCount }}</p>
|
||||
|
||||
<div class="actions" v-if="!game.isEnded && iAmPlayer">
|
||||
<MkButton @click="surrender" inline>{{ $t('_reversi.surrender') }}</MkButton>
|
||||
<MkButton @click="surrender" inline>{{ $ts._reversi.surrender }}</MkButton>
|
||||
</div>
|
||||
|
||||
<div class="player" v-if="game.isEnded">
|
||||
|
@ -72,9 +72,9 @@
|
|||
</div>
|
||||
|
||||
<div class="info">
|
||||
<p v-if="game.isLlotheo">{{ $t('_reversi.isLlotheo') }}</p>
|
||||
<p v-if="game.loopedBoard">{{ $t('_reversi.loopedMap') }}</p>
|
||||
<p v-if="game.canPutEverywhere">{{ $t('_reversi.canPutEverywhere') }}</p>
|
||||
<p v-if="game.isLlotheo">{{ $ts._reversi.isLlotheo }}</p>
|
||||
<p v-if="game.loopedBoard">{{ $ts._reversi.loopedMap }}</p>
|
||||
<p v-if="game.canPutEverywhere">{{ $ts._reversi.canPutEverywhere }}</p>
|
||||
</div>
|
||||
|
||||
<div class="watchers">
|
||||
|
|
|
@ -3,13 +3,13 @@
|
|||
<header><b><MkUserName :user="game.user1"/></b> vs <b><MkUserName :user="game.user2"/></b></header>
|
||||
|
||||
<div>
|
||||
<p>{{ $t('_reversi.gameSettings') }}</p>
|
||||
<p>{{ $ts._reversi.gameSettings }}</p>
|
||||
|
||||
<div class="card map _panel">
|
||||
<header>
|
||||
<select v-model="mapName" :placeholder="$t('_reversi.chooseBoard')" @change="onMapChange">
|
||||
<select v-model="mapName" :placeholder="$ts._reversi.chooseBoard" @change="onMapChange">
|
||||
<option label="-Custom-" :value="mapName" v-if="mapName == '-Custom-'"/>
|
||||
<option :label="$t('random')" :value="null"/>
|
||||
<option :label="$ts.random" :value="null"/>
|
||||
<optgroup v-for="c in mapCategories" :key="c" :label="c">
|
||||
<option v-for="m in Object.values(maps).filter(m => m.category == c)" :key="m.name" :label="m.name" :value="m.name">{{ m.name }}</option>
|
||||
</optgroup>
|
||||
|
@ -29,20 +29,20 @@
|
|||
|
||||
<div class="card _panel">
|
||||
<header>
|
||||
<span>{{ $t('_reversi.blackOrWhite') }}</span>
|
||||
<span>{{ $ts._reversi.blackOrWhite }}</span>
|
||||
</header>
|
||||
|
||||
<div>
|
||||
<MkRadio v-model="game.bw" value="random" @update:modelValue="updateSettings('bw')">{{ $t('random') }}</MkRadio>
|
||||
<MkRadio v-model="game.bw" value="random" @update:modelValue="updateSettings('bw')">{{ $ts.random }}</MkRadio>
|
||||
<MkRadio v-model="game.bw" :value="'1'" @update:modelValue="updateSettings('bw')">
|
||||
<I18n src="_reversi.blackIs" tag="span">
|
||||
<I18n :src="$ts._reversi.blackIs" tag="span">
|
||||
<template #name>
|
||||
<b><MkUserName :user="game.user1"/></b>
|
||||
</template>
|
||||
</I18n>
|
||||
</MkRadio>
|
||||
<MkRadio v-model="game.bw" :value="'2'" @update:modelValue="updateSettings('bw')">
|
||||
<I18n src="_reversi.blackIs" tag="span">
|
||||
<I18n :src="$ts._reversi.blackIs" tag="span">
|
||||
<template #name>
|
||||
<b><MkUserName :user="game.user2"/></b>
|
||||
</template>
|
||||
|
@ -53,19 +53,19 @@
|
|||
|
||||
<div class="card _panel">
|
||||
<header>
|
||||
<span>{{ $t('_reversi.rules') }}</span>
|
||||
<span>{{ $ts._reversi.rules }}</span>
|
||||
</header>
|
||||
|
||||
<div>
|
||||
<MkSwitch v-model:value="game.isLlotheo" @update:value="updateSettings('isLlotheo')">{{ $t('_reversi.isLlotheo') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="game.loopedBoard" @update:value="updateSettings('loopedBoard')">{{ $t('_reversi.loopedMap') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="game.canPutEverywhere" @update:value="updateSettings('canPutEverywhere')">{{ $t('_reversi.canPutEverywhere') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="game.isLlotheo" @update:value="updateSettings('isLlotheo')">{{ $ts._reversi.isLlotheo }}</MkSwitch>
|
||||
<MkSwitch v-model:value="game.loopedBoard" @update:value="updateSettings('loopedBoard')">{{ $ts._reversi.loopedMap }}</MkSwitch>
|
||||
<MkSwitch v-model:value="game.canPutEverywhere" @update:value="updateSettings('canPutEverywhere')">{{ $ts._reversi.canPutEverywhere }}</MkSwitch>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card form _panel" v-if="form">
|
||||
<header>
|
||||
<span>{{ $t('_reversi.botSettings') }}</span>
|
||||
<span>{{ $ts._reversi.botSettings }}</span>
|
||||
</header>
|
||||
|
||||
<div>
|
||||
|
@ -108,16 +108,16 @@
|
|||
|
||||
<footer class="_acrylic">
|
||||
<p class="status">
|
||||
<template v-if="isAccepted && isOpAccepted">{{ $t('_reversi.thisGameIsStartedSoon') }}<MkEllipsis/></template>
|
||||
<template v-if="isAccepted && !isOpAccepted">{{ $t('_reversi.waitingForOther') }}<MkEllipsis/></template>
|
||||
<template v-if="!isAccepted && isOpAccepted">{{ $t('_reversi.waitingForMe') }}</template>
|
||||
<template v-if="!isAccepted && !isOpAccepted">{{ $t('_reversi.waitingBoth') }}<MkEllipsis/></template>
|
||||
<template v-if="isAccepted && isOpAccepted">{{ $ts._reversi.thisGameIsStartedSoon }}<MkEllipsis/></template>
|
||||
<template v-if="isAccepted && !isOpAccepted">{{ $ts._reversi.waitingForOther }}<MkEllipsis/></template>
|
||||
<template v-if="!isAccepted && isOpAccepted">{{ $ts._reversi.waitingForMe }}</template>
|
||||
<template v-if="!isAccepted && !isOpAccepted">{{ $ts._reversi.waitingBoth }}<MkEllipsis/></template>
|
||||
</p>
|
||||
|
||||
<div class="actions">
|
||||
<MkButton inline @click="exit">{{ $t('cancel') }}</MkButton>
|
||||
<MkButton inline primary @click="accept" v-if="!isAccepted">{{ $t('_reversi.ready') }}</MkButton>
|
||||
<MkButton inline primary @click="cancel" v-if="isAccepted">{{ $t('_reversi.cancelReady') }}</MkButton>
|
||||
<MkButton inline @click="exit">{{ $ts.cancel }}</MkButton>
|
||||
<MkButton inline primary @click="accept" v-if="!isAccepted">{{ $ts._reversi.ready }}</MkButton>
|
||||
<MkButton inline primary @click="cancel" v-if="isAccepted">{{ $ts._reversi.cancelReady }}</MkButton>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
|
|
@ -27,7 +27,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('_reversi.reversi'),
|
||||
title: this.$ts._reversi.reversi,
|
||||
icon: faGamepad
|
||||
},
|
||||
game: null,
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
<template>
|
||||
<div class="bgvwxkhb" v-if="!matching">
|
||||
<h1>Misskey {{ $t('_reversi.reversi') }}</h1>
|
||||
<h1>Misskey {{ $ts._reversi.reversi }}</h1>
|
||||
|
||||
<div class="play">
|
||||
<MkButton primary round @click="match" style="margin: var(--margin) auto 0 auto;">{{ $t('invite') }}</MkButton>
|
||||
<MkButton primary round @click="match" style="margin: var(--margin) auto 0 auto;">{{ $ts.invite }}</MkButton>
|
||||
</div>
|
||||
|
||||
<div class="_section">
|
||||
<MkFolder v-if="invitations.length > 0">
|
||||
<template #header>{{ $t('invitations') }}</template>
|
||||
<template #header>{{ $ts.invitations }}</template>
|
||||
<div class="nfcacttm">
|
||||
<button class="invitation _panel _button" v-for="invitation in invitations" tabindex="-1" @click="accept(invitation)">
|
||||
<MkAvatar class="avatar" :user="invitation.parent"/>
|
||||
|
@ -20,25 +20,25 @@
|
|||
</MkFolder>
|
||||
|
||||
<MkFolder v-if="myGames.length > 0">
|
||||
<template #header>{{ $t('_reversi.myGames') }}</template>
|
||||
<template #header>{{ $ts._reversi.myGames }}</template>
|
||||
<div class="knextgwz">
|
||||
<MkA class="game _panel" v-for="g in myGames" tabindex="-1" :to="`/games/reversi/${g.id}`" :key="g.id">
|
||||
<div class="players">
|
||||
<MkAvatar class="avatar" :user="g.user1"/><b><MkUserName :user="g.user1"/></b> vs <b><MkUserName :user="g.user2"/></b><MkAvatar class="avatar" :user="g.user2"/>
|
||||
</div>
|
||||
<footer><span class="state" :class="{ playing: !g.isEnded }">{{ g.isEnded ? $t('_reversi.ended') : $t('_reversi.playing') }}</span><MkTime class="time" :time="g.createdAt"/></footer>
|
||||
<footer><span class="state" :class="{ playing: !g.isEnded }">{{ g.isEnded ? $ts._reversi.ended : $ts._reversi.playing }}</span><MkTime class="time" :time="g.createdAt"/></footer>
|
||||
</MkA>
|
||||
</div>
|
||||
</MkFolder>
|
||||
|
||||
<MkFolder v-if="games.length > 0">
|
||||
<template #header>{{ $t('_reversi.allGames') }}</template>
|
||||
<template #header>{{ $ts._reversi.allGames }}</template>
|
||||
<div class="knextgwz">
|
||||
<MkA class="game _panel" v-for="g in games" tabindex="-1" :to="`/games/reversi/${g.id}`" :key="g.id">
|
||||
<div class="players">
|
||||
<MkAvatar class="avatar" :user="g.user1"/><b><MkUserName :user="g.user1"/></b> vs <b><MkUserName :user="g.user2"/></b><MkAvatar class="avatar" :user="g.user2"/>
|
||||
</div>
|
||||
<footer><span class="state" :class="{ playing: !g.isEnded }">{{ g.isEnded ? $t('_reversi.ended') : $t('_reversi.playing') }}</span><MkTime class="time" :time="g.createdAt"/></footer>
|
||||
<footer><span class="state" :class="{ playing: !g.isEnded }">{{ g.isEnded ? $ts._reversi.ended : $ts._reversi.playing }}</span><MkTime class="time" :time="g.createdAt"/></footer>
|
||||
</MkA>
|
||||
</div>
|
||||
</MkFolder>
|
||||
|
@ -46,7 +46,7 @@
|
|||
</div>
|
||||
<div class="sazhgisb" v-else>
|
||||
<h1>
|
||||
<I18n src="waitingFor" tag="span">
|
||||
<I18n :src="$ts.waitingFor" tag="span">
|
||||
<template #x>
|
||||
<b><MkUserName :user="matching"/></b>
|
||||
</template>
|
||||
|
@ -54,7 +54,7 @@
|
|||
<MkEllipsis/>
|
||||
</h1>
|
||||
<div class="cancel">
|
||||
<MkButton inline round @click="cancel">{{ $t('cancel') }}</MkButton>
|
||||
<MkButton inline round @click="cancel">{{ $ts.cancel }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -76,7 +76,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('_reversi.reversi'),
|
||||
title: this.$ts._reversi.reversi,
|
||||
icon: faGamepad
|
||||
},
|
||||
games: [],
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<div v-for="k in Object.keys(selectedFurnitureInfo.props)" :key="k">
|
||||
<p>{{ k }}</p>
|
||||
<template v-if="selectedFurnitureInfo.props[k] === 'image'">
|
||||
<MkButton @click="chooseImage(k, $event)">{{ $t('_rooms.chooseImage') }}</MkButton>
|
||||
<MkButton @click="chooseImage(k, $event)">{{ $ts._rooms.chooseImage }}</MkButton>
|
||||
</template>
|
||||
<template v-else-if="selectedFurnitureInfo.props[k] === 'color'">
|
||||
<input type="color" :value="selectedFurnitureProps ? selectedFurnitureProps[k] : null" @change="updateColor(k, $event)"/>
|
||||
|
@ -17,33 +17,33 @@
|
|||
</template>
|
||||
</div>
|
||||
<div class="_content">
|
||||
<MkButton inline @click="translate()" :primary="isTranslateMode"><Fa :icon="faArrowsAlt"/> {{ $t('_rooms.translate') }}</MkButton>
|
||||
<MkButton inline @click="rotate()" :primary="isRotateMode"><Fa :icon="faUndo"/> {{ $t('_rooms.rotate') }}</MkButton>
|
||||
<MkButton inline v-if="isTranslateMode || isRotateMode" @click="exit()"><Fa :icon="faBan"/> {{ $t('_rooms.exit') }}</MkButton>
|
||||
<MkButton inline @click="translate()" :primary="isTranslateMode"><Fa :icon="faArrowsAlt"/> {{ $ts._rooms.translate }}</MkButton>
|
||||
<MkButton inline @click="rotate()" :primary="isRotateMode"><Fa :icon="faUndo"/> {{ $ts._rooms.rotate }}</MkButton>
|
||||
<MkButton inline v-if="isTranslateMode || isRotateMode" @click="exit()"><Fa :icon="faBan"/> {{ $ts._rooms.exit }}</MkButton>
|
||||
</div>
|
||||
<div class="_content">
|
||||
<MkButton @click="remove()"><Fa :icon="faTrashAlt"/> {{ $t('_rooms.remove') }}</MkButton>
|
||||
<MkButton @click="remove()"><Fa :icon="faTrashAlt"/> {{ $ts._rooms.remove }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="menu _section" v-if="isMyRoom">
|
||||
<div class="_content">
|
||||
<MkButton @click="add()"><Fa :icon="faBoxOpen"/> {{ $t('_rooms.addFurniture') }}</MkButton>
|
||||
<MkButton @click="add()"><Fa :icon="faBoxOpen"/> {{ $ts._rooms.addFurniture }}</MkButton>
|
||||
</div>
|
||||
<div class="_content">
|
||||
<MkSelect :value="roomType" @update:value="updateRoomType($event)">
|
||||
<template #label>{{ $t('_rooms.roomType') }}</template>
|
||||
<option value="default">{{ $t('_rooms._roomType.default') }}</option>
|
||||
<option value="washitsu">{{ $t('_rooms._roomType.washitsu') }}</option>
|
||||
<template #label>{{ $ts._rooms.roomType }}</template>
|
||||
<option value="default">{{ $ts._rooms._roomType.default }}</option>
|
||||
<option value="washitsu">{{ $ts._rooms._roomType.washitsu }}</option>
|
||||
</MkSelect>
|
||||
<label v-if="roomType === 'default'">
|
||||
<span>{{ $t('_rooms.carpetColor') }}</span>
|
||||
<span>{{ $ts._rooms.carpetColor }}</span>
|
||||
<input type="color" :value="carpetColor" @change="updateCarpetColor($event)"/>
|
||||
</label>
|
||||
</div>
|
||||
<div class="_content">
|
||||
<MkButton inline :disabled="!changed" primary @click="save()"><Fa :icon="faSave"/> {{ $t('save') }}</MkButton>
|
||||
<MkButton inline @click="clear()"><Fa :icon="faBroom"/> {{ $t('_rooms.clear') }}</MkButton>
|
||||
<MkButton inline :disabled="!changed" primary @click="save()"><Fa :icon="faSave"/> {{ $ts.save }}</MkButton>
|
||||
<MkButton inline @click="clear()"><Fa :icon="faBroom"/> {{ $ts._rooms.clear }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -83,7 +83,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: computed(() => this.user ? {
|
||||
title: this.$t('room'),
|
||||
title: this.$ts.room,
|
||||
avatar: this.user,
|
||||
} : null),
|
||||
user: null,
|
||||
|
@ -141,7 +141,7 @@ export default defineComponent({
|
|||
if (this.changed) {
|
||||
os.dialog({
|
||||
type: 'warning',
|
||||
text: this.$t('leaveConfirm'),
|
||||
text: this.$ts.leaveConfirm,
|
||||
showCancelButton: true
|
||||
}).then(({ canceled }) => {
|
||||
if (canceled) {
|
||||
|
@ -171,7 +171,7 @@ export default defineComponent({
|
|||
async add() {
|
||||
const { canceled, result: id } = await os.dialog({
|
||||
type: null,
|
||||
title: this.$t('_rooms.addFurniture'),
|
||||
title: this.$ts._rooms.addFurniture,
|
||||
select: {
|
||||
items: storeItems.map(item => ({
|
||||
value: item.id, text: this.$t('_rooms._furnitures.' + item.id)
|
||||
|
@ -208,7 +208,7 @@ export default defineComponent({
|
|||
clear() {
|
||||
os.dialog({
|
||||
type: 'warning',
|
||||
text: this.$t('_rooms.clearConfirm'),
|
||||
text: this.$ts._rooms.clearConfirm,
|
||||
showCancelButton: true
|
||||
}).then(({ canceled }) => {
|
||||
if (canceled) return;
|
||||
|
|
|
@ -6,14 +6,14 @@
|
|||
</div>
|
||||
|
||||
<MkContainer :body-togglable="true">
|
||||
<template #header><Fa fixed-width/>{{ $t('output') }}</template>
|
||||
<template #header><Fa fixed-width/>{{ $ts.output }}</template>
|
||||
<div class="bepmlvbi">
|
||||
<div v-for="log in logs" class="log" :key="log.id" :class="{ print: log.print }">{{ log.text }}</div>
|
||||
</div>
|
||||
</MkContainer>
|
||||
|
||||
<section class="_section" style="margin-top: var(--margin);">
|
||||
<div class="_content">{{ $t('scratchpadDescription') }}</div>
|
||||
<div class="_content">{{ $ts.scratchpadDescription }}</div>
|
||||
</section>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -44,7 +44,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('scratchpad'),
|
||||
title: this.$ts.scratchpad,
|
||||
icon: faTerminal,
|
||||
},
|
||||
code: '',
|
||||
|
|
|
@ -1,41 +1,41 @@
|
|||
<template>
|
||||
<section class="_card">
|
||||
<div class="_title"><Fa :icon="faLock"/> {{ $t('twoStepAuthentication') }}</div>
|
||||
<div class="_title"><Fa :icon="faLock"/> {{ $ts.twoStepAuthentication }}</div>
|
||||
<div class="_content">
|
||||
<MkButton v-if="!data && !$i.twoFactorEnabled" @click="register">{{ $t('_2fa.registerDevice') }}</MkButton>
|
||||
<MkButton v-if="!data && !$i.twoFactorEnabled" @click="register">{{ $ts._2fa.registerDevice }}</MkButton>
|
||||
<template v-if="$i.twoFactorEnabled">
|
||||
<p>{{ $t('_2fa.alreadyRegistered') }}</p>
|
||||
<MkButton @click="unregister">{{ $t('unregister') }}</MkButton>
|
||||
<p>{{ $ts._2fa.alreadyRegistered }}</p>
|
||||
<MkButton @click="unregister">{{ $ts.unregister }}</MkButton>
|
||||
|
||||
<template v-if="supportsCredentials">
|
||||
<hr class="totp-method-sep">
|
||||
|
||||
<h2 class="heading">{{ $t('securityKey') }}</h2>
|
||||
<p>{{ $t('_2fa.securityKeyInfo') }}</p>
|
||||
<h2 class="heading">{{ $ts.securityKey }}</h2>
|
||||
<p>{{ $ts._2fa.securityKeyInfo }}</p>
|
||||
<div class="key-list">
|
||||
<div class="key" v-for="key in $i.securityKeysList">
|
||||
<h3>{{ key.name }}</h3>
|
||||
<div class="last-used">{{ $t('lastUsed') }}<MkTime :time="key.lastUsed"/></div>
|
||||
<MkButton @click="unregisterKey(key)">{{ $t('unregister') }}</MkButton>
|
||||
<div class="last-used">{{ $ts.lastUsed }}<MkTime :time="key.lastUsed"/></div>
|
||||
<MkButton @click="unregisterKey(key)">{{ $ts.unregister }}</MkButton>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<MkSwitch v-model:value="usePasswordLessLogin" @update:value="updatePasswordLessLogin" v-if="$i.securityKeysList.length > 0">{{ $t('passwordLessLogin') }}</MkSwitch>
|
||||
<MkSwitch v-model:value="usePasswordLessLogin" @update:value="updatePasswordLessLogin" v-if="$i.securityKeysList.length > 0">{{ $ts.passwordLessLogin }}</MkSwitch>
|
||||
|
||||
<MkInfo warn v-if="registration && registration.error">{{ $t('error') }} {{ registration.error }}</MkInfo>
|
||||
<MkButton v-if="!registration || registration.error" @click="addSecurityKey">{{ $t('_2fa.registerKey') }}</MkButton>
|
||||
<MkInfo warn v-if="registration && registration.error">{{ $ts.error }} {{ registration.error }}</MkInfo>
|
||||
<MkButton v-if="!registration || registration.error" @click="addSecurityKey">{{ $ts._2fa.registerKey }}</MkButton>
|
||||
|
||||
<ol v-if="registration && !registration.error">
|
||||
<li v-if="registration.stage >= 0">
|
||||
{{ $t('tapSecurityKey') }}
|
||||
{{ $ts.tapSecurityKey }}
|
||||
<Fa icon="spinner" pulse fixed-width v-if="registration.saving && registration.stage == 0" />
|
||||
</li>
|
||||
<li v-if="registration.stage >= 1">
|
||||
<MkForm :disabled="registration.stage != 1 || registration.saving">
|
||||
<MkInput v-model:value="keyName" :max="30">
|
||||
<span>{{ $t('securityKeyName') }}</span>
|
||||
<span>{{ $ts.securityKeyName }}</span>
|
||||
</MkInput>
|
||||
<MkButton @click="registerKey" :disabled="keyName.length == 0">{{ $t('registerSecurityKey') }}</MkButton>
|
||||
<MkButton @click="registerKey" :disabled="keyName.length == 0">{{ $ts.registerSecurityKey }}</MkButton>
|
||||
<Fa icon="spinner" pulse fixed-width v-if="registration.saving && registration.stage == 1" />
|
||||
</MkForm>
|
||||
</li>
|
||||
|
@ -45,7 +45,7 @@
|
|||
<div v-if="data && !$i.twoFactorEnabled">
|
||||
<ol style="margin: 0; padding: 0 0 0 1em;">
|
||||
<li>
|
||||
<I18n src="_2fa.step1" tag="span">
|
||||
<I18n :src="$ts._2fa.step1" tag="span">
|
||||
<template #a>
|
||||
<a href="https://authy.com/" rel="noopener" target="_blank" class="_link">Authy</a>
|
||||
</template>
|
||||
|
@ -54,13 +54,13 @@
|
|||
</template>
|
||||
</I18n>
|
||||
</li>
|
||||
<li>{{ $t('_2fa.step2') }}<br><img :src="data.qr"></li>
|
||||
<li>{{ $t('_2fa.step3') }}<br>
|
||||
<MkInput v-model:value="token" type="text" pattern="^[0-9]{6}$" autocomplete="off" spellcheck="false">{{ $t('token') }}</MkInput>
|
||||
<MkButton primary @click="submit">{{ $t('done') }}</MkButton>
|
||||
<li>{{ $ts._2fa.step2 }}<br><img :src="data.qr"></li>
|
||||
<li>{{ $ts._2fa.step3 }}<br>
|
||||
<MkInput v-model:value="token" type="text" pattern="^[0-9]{6}$" autocomplete="off" spellcheck="false">{{ $ts.token }}</MkInput>
|
||||
<MkButton primary @click="submit">{{ $ts.done }}</MkButton>
|
||||
</li>
|
||||
</ol>
|
||||
<MkInfo>{{ $t('_2fa.step4') }}</MkInfo>
|
||||
<MkInfo>{{ $ts._2fa.step4 }}</MkInfo>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
@ -91,7 +91,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('twoStepAuthentication'),
|
||||
title: this.$ts.twoStepAuthentication,
|
||||
icon: faLock
|
||||
},
|
||||
data: null,
|
||||
|
@ -107,7 +107,7 @@ export default defineComponent({
|
|||
methods: {
|
||||
register() {
|
||||
os.dialog({
|
||||
title: this.$t('password'),
|
||||
title: this.$ts.password,
|
||||
input: {
|
||||
type: 'password'
|
||||
}
|
||||
|
@ -123,7 +123,7 @@ export default defineComponent({
|
|||
|
||||
unregister() {
|
||||
os.dialog({
|
||||
title: this.$t('password'),
|
||||
title: this.$ts.password,
|
||||
input: {
|
||||
type: 'password'
|
||||
}
|
||||
|
@ -173,7 +173,7 @@ export default defineComponent({
|
|||
|
||||
unregisterKey(key) {
|
||||
os.dialog({
|
||||
title: this.$t('password'),
|
||||
title: this.$ts.password,
|
||||
input: {
|
||||
type: 'password'
|
||||
}
|
||||
|
@ -193,7 +193,7 @@ export default defineComponent({
|
|||
|
||||
addSecurityKey() {
|
||||
os.dialog({
|
||||
title: this.$t('password'),
|
||||
title: this.$ts.password,
|
||||
input: {
|
||||
type: 'password'
|
||||
}
|
||||
|
|
|
@ -7,124 +7,124 @@
|
|||
|
||||
<FormGroup>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('registeredDate') }}</template>
|
||||
<template #key>{{ $ts.registeredDate }}</template>
|
||||
<template #value><MkTime :time="$i.createdAt" mode="detail"/></template>
|
||||
</FormKeyValueView>
|
||||
</FormGroup>
|
||||
|
||||
<FormGroup v-if="stats">
|
||||
<template #label>{{ $t('statistics') }}</template>
|
||||
<template #label>{{ $ts.statistics }}</template>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('notesCount') }}</template>
|
||||
<template #key>{{ $ts.notesCount }}</template>
|
||||
<template #value>{{ number(stats.notesCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('repliesCount') }}</template>
|
||||
<template #key>{{ $ts.repliesCount }}</template>
|
||||
<template #value>{{ number(stats.repliesCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('renotesCount') }}</template>
|
||||
<template #key>{{ $ts.renotesCount }}</template>
|
||||
<template #value>{{ number(stats.renotesCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('repliedCount') }}</template>
|
||||
<template #key>{{ $ts.repliedCount }}</template>
|
||||
<template #value>{{ number(stats.repliedCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('renotedCount') }}</template>
|
||||
<template #key>{{ $ts.renotedCount }}</template>
|
||||
<template #value>{{ number(stats.renotedCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('pollVotesCount') }}</template>
|
||||
<template #key>{{ $ts.pollVotesCount }}</template>
|
||||
<template #value>{{ number(stats.pollVotesCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('pollVotedCount') }}</template>
|
||||
<template #key>{{ $ts.pollVotedCount }}</template>
|
||||
<template #value>{{ number(stats.pollVotedCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('sentReactionsCount') }}</template>
|
||||
<template #key>{{ $ts.sentReactionsCount }}</template>
|
||||
<template #value>{{ number(stats.sentReactionsCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('receivedReactionsCount') }}</template>
|
||||
<template #key>{{ $ts.receivedReactionsCount }}</template>
|
||||
<template #value>{{ number(stats.receivedReactionsCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('noteFavoritesCount') }}</template>
|
||||
<template #key>{{ $ts.noteFavoritesCount }}</template>
|
||||
<template #value>{{ number(stats.noteFavoritesCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('followingCount') }}</template>
|
||||
<template #key>{{ $ts.followingCount }}</template>
|
||||
<template #value>{{ number(stats.followingCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('followingCount') }} ({{ $t('local') }})</template>
|
||||
<template #key>{{ $ts.followingCount }} ({{ $ts.local }})</template>
|
||||
<template #value>{{ number(stats.localFollowingCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('followingCount') }} ({{ $t('remote') }})</template>
|
||||
<template #key>{{ $ts.followingCount }} ({{ $ts.remote }})</template>
|
||||
<template #value>{{ number(stats.remoteFollowingCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('followersCount') }}</template>
|
||||
<template #key>{{ $ts.followersCount }}</template>
|
||||
<template #value>{{ number(stats.followersCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('followersCount') }} ({{ $t('local') }})</template>
|
||||
<template #key>{{ $ts.followersCount }} ({{ $ts.local }})</template>
|
||||
<template #value>{{ number(stats.localFollowersCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('followersCount') }} ({{ $t('remote') }})</template>
|
||||
<template #key>{{ $ts.followersCount }} ({{ $ts.remote }})</template>
|
||||
<template #value>{{ number(stats.remoteFollowersCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('pageLikesCount') }}</template>
|
||||
<template #key>{{ $ts.pageLikesCount }}</template>
|
||||
<template #value>{{ number(stats.pageLikesCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('pageLikedCount') }}</template>
|
||||
<template #key>{{ $ts.pageLikedCount }}</template>
|
||||
<template #value>{{ number(stats.pageLikedCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('driveFilesCount') }}</template>
|
||||
<template #key>{{ $ts.driveFilesCount }}</template>
|
||||
<template #value>{{ number(stats.driveFilesCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('driveUsage') }}</template>
|
||||
<template #key>{{ $ts.driveUsage }}</template>
|
||||
<template #value>{{ bytes(stats.driveUsage) }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>{{ $t('reversiCount') }}</template>
|
||||
<template #key>{{ $ts.reversiCount }}</template>
|
||||
<template #value>{{ number(stats.reversiCount) }}</template>
|
||||
</FormKeyValueView>
|
||||
</FormGroup>
|
||||
|
||||
<FormGroup>
|
||||
<template #label>{{ $t('other') }}</template>
|
||||
<template #label>{{ $ts.other }}</template>
|
||||
<FormKeyValueView>
|
||||
<template #key>emailVerified</template>
|
||||
<template #value>{{ $i.emailVerified ? $t('yes') : $t('no') }}</template>
|
||||
<template #value>{{ $i.emailVerified ? $ts.yes : $ts.no }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>twoFactorEnabled</template>
|
||||
<template #value>{{ $i.twoFactorEnabled ? $t('yes') : $t('no') }}</template>
|
||||
<template #value>{{ $i.twoFactorEnabled ? $ts.yes : $ts.no }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>securityKeys</template>
|
||||
<template #value>{{ $i.securityKeys ? $t('yes') : $t('no') }}</template>
|
||||
<template #value>{{ $i.securityKeys ? $ts.yes : $ts.no }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>usePasswordLessLogin</template>
|
||||
<template #value>{{ $i.usePasswordLessLogin ? $t('yes') : $t('no') }}</template>
|
||||
<template #value>{{ $i.usePasswordLessLogin ? $ts.yes : $ts.no }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>isModerator</template>
|
||||
<template #value>{{ $i.isModerator ? $t('yes') : $t('no') }}</template>
|
||||
<template #value>{{ $i.isModerator ? $ts.yes : $ts.no }}</template>
|
||||
</FormKeyValueView>
|
||||
<FormKeyValueView>
|
||||
<template #key>isAdmin</template>
|
||||
<template #value>{{ $i.isAdmin ? $t('yes') : $t('no') }}</template>
|
||||
<template #value>{{ $i.isAdmin ? $ts.yes : $ts.no }}</template>
|
||||
</FormKeyValueView>
|
||||
</FormGroup>
|
||||
</FormBase>
|
||||
|
@ -160,7 +160,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('accountInfo'),
|
||||
title: this.$ts.accountInfo,
|
||||
icon: faInfoCircle
|
||||
},
|
||||
stats: null
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<FormBase>
|
||||
<FormButton @click="generateToken" primary>{{ $t('generateAccessToken') }}</FormButton>
|
||||
<FormLink to="/settings/apps">{{ $t('manageAccessTokens') }}</FormLink>
|
||||
<FormButton @click="generateToken" primary>{{ $ts.generateAccessToken }}</FormButton>
|
||||
<FormLink to="/settings/apps">{{ $ts.manageAccessTokens }}</FormLink>
|
||||
<FormLink to="/api-console" :behavior="isDesktop ? 'window' : null">API console</FormLink>
|
||||
</FormBase>
|
||||
</template>
|
||||
|
@ -53,7 +53,7 @@ export default defineComponent({
|
|||
|
||||
os.dialog({
|
||||
type: 'success',
|
||||
title: this.$t('token'),
|
||||
title: this.$ts.token,
|
||||
text: token
|
||||
});
|
||||
},
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<template #empty>
|
||||
<div class="_fullinfo">
|
||||
<img src="https://xn--931a.moe/assets/info.jpg" class="_ghost"/>
|
||||
<div>{{ $t('nothing') }}</div>
|
||||
<div>{{ $ts.nothing }}</div>
|
||||
</div>
|
||||
</template>
|
||||
<template #default="{items}">
|
||||
|
@ -14,18 +14,18 @@
|
|||
<div class="name">{{ token.name }}</div>
|
||||
<div class="description">{{ token.description }}</div>
|
||||
<div class="_keyValue">
|
||||
<div>{{ $t('installedDate') }}:</div>
|
||||
<div>{{ $ts.installedDate }}:</div>
|
||||
<div><MkTime :time="token.createdAt"/></div>
|
||||
</div>
|
||||
<div class="_keyValue">
|
||||
<div>{{ $t('lastUsedDate') }}:</div>
|
||||
<div>{{ $ts.lastUsedDate }}:</div>
|
||||
<div><MkTime :time="token.lastUsedAt"/></div>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<button class="_button" @click="revoke(token)"><Fa :icon="faTrashAlt"/></button>
|
||||
</div>
|
||||
<details>
|
||||
<summary>{{ $t('details') }}</summary>
|
||||
<summary>{{ $ts.details }}</summary>
|
||||
<ul>
|
||||
<li v-for="p in token.permission" :key="p">{{ $t(`_permissions.${p}`) }}</li>
|
||||
</ul>
|
||||
|
@ -59,7 +59,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('installedApps'),
|
||||
title: this.$ts.installedApps,
|
||||
icon: faPlug,
|
||||
},
|
||||
pagination: {
|
||||
|
|
|
@ -4,18 +4,18 @@
|
|||
<section class="_card _vMargin">
|
||||
<div class="_title"><Fa :icon="faColumns"/> </div>
|
||||
<div class="_content">
|
||||
<div>{{ $t('defaultNavigationBehaviour') }}</div>
|
||||
<MkSwitch v-model:value="navWindow">{{ $t('openInWindow') }}</MkSwitch>
|
||||
<div>{{ $ts.defaultNavigationBehaviour }}</div>
|
||||
<MkSwitch v-model:value="navWindow">{{ $ts.openInWindow }}</MkSwitch>
|
||||
</div>
|
||||
<div class="_content">
|
||||
<MkSwitch v-model:value="alwaysShowMainColumn">
|
||||
{{ $t('_deck.alwaysShowMainColumn') }}
|
||||
{{ $ts._deck.alwaysShowMainColumn }}
|
||||
</MkSwitch>
|
||||
</div>
|
||||
<div class="_content">
|
||||
<div>{{ $t('_deck.columnAlign') }}</div>
|
||||
<MkRadio v-model="columnAlign" value="left">{{ $t('left') }}</MkRadio>
|
||||
<MkRadio v-model="columnAlign" value="center">{{ $t('center') }}</MkRadio>
|
||||
<div>{{ $ts._deck.columnAlign }}</div>
|
||||
<MkRadio v-model="columnAlign" value="left">{{ $ts.left }}</MkRadio>
|
||||
<MkRadio v-model="columnAlign" value="center">{{ $ts.center }}</MkRadio>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
@ -60,7 +60,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('deck'),
|
||||
title: this.$ts.deck,
|
||||
icon: faColumns
|
||||
},
|
||||
faImage, faCog,
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<template>
|
||||
<section class="uawsfosz _section">
|
||||
<div class="_title"><Fa :icon="faCloud"/> {{ $t('drive') }}</div>
|
||||
<div class="_title"><Fa :icon="faCloud"/> {{ $ts.drive }}</div>
|
||||
<div class="_content">
|
||||
<span>{{ $t('uploadFolder') }}: {{ uploadFolder ? uploadFolder.name : '-' }}</span>
|
||||
<MkButton primary @click="chooseUploadFolder()"><Fa :icon="faFolderOpen"/> {{ $t('selectFolder') }}</MkButton>
|
||||
<span>{{ $ts.uploadFolder }}: {{ uploadFolder ? uploadFolder.name : '-' }}</span>
|
||||
<MkButton primary @click="chooseUploadFolder()"><Fa :icon="faFolderOpen"/> {{ $ts.selectFolder }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
<FormBase>
|
||||
<FormGroup>
|
||||
<FormInput v-model:value="emailAddress" type="email">
|
||||
{{ $t('emailAddress') }}
|
||||
<template #desc v-if="$i.email && !$i.emailVerified">{{ $t('verificationEmailSent') }}</template>
|
||||
<template #desc v-else-if="emailAddress === $i.email && $i.emailVerified">{{ $t('emailVerified') }}</template>
|
||||
{{ $ts.emailAddress }}
|
||||
<template #desc v-if="$i.email && !$i.emailVerified">{{ $ts.verificationEmailSent }}</template>
|
||||
<template #desc v-else-if="emailAddress === $i.email && $i.emailVerified">{{ $ts.emailVerified }}</template>
|
||||
</FormInput>
|
||||
</FormGroup>
|
||||
<FormButton @click="save" primary>{{ $t('save') }}</FormButton>
|
||||
<FormButton @click="save" primary>{{ $ts.save }}</FormButton>
|
||||
</FormBase>
|
||||
</template>
|
||||
|
||||
|
@ -34,7 +34,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('emailAddress'),
|
||||
title: this.$ts.emailAddress,
|
||||
icon: faEnvelope
|
||||
},
|
||||
emailAddress: null,
|
||||
|
@ -54,7 +54,7 @@ export default defineComponent({
|
|||
methods: {
|
||||
save() {
|
||||
os.dialog({
|
||||
title: this.$t('password'),
|
||||
title: this.$ts.password,
|
||||
input: {
|
||||
type: 'password'
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<template>
|
||||
<FormBase>
|
||||
<FormGroup>
|
||||
<template #label>{{ $t('emailAddress') }}</template>
|
||||
<template #label>{{ $ts.emailAddress }}</template>
|
||||
<FormLink to="/settings/email/address">
|
||||
<template v-if="$i.email && !$i.emailVerified" #icon><Fa :icon="faExclamationTriangle" style="color: var(--warn);"/></template>
|
||||
<template v-else-if="$i.email && $i.emailVerified" #icon><Fa :icon="faCheck" style="color: var(--success);"/></template>
|
||||
{{ $i.email || $t('notSet') }}
|
||||
{{ $i.email || $ts.notSet }}
|
||||
</FormLink>
|
||||
</FormGroup>
|
||||
</FormBase>
|
||||
|
@ -34,7 +34,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('email'),
|
||||
title: this.$ts.email,
|
||||
icon: faEnvelope
|
||||
},
|
||||
faCog, faExclamationTriangle, faCheck
|
||||
|
|
|
@ -32,7 +32,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('experimentalFeatures'),
|
||||
title: this.$ts.experimentalFeatures,
|
||||
icon: faFlask
|
||||
},
|
||||
stats: null
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<template>
|
||||
<FormBase>
|
||||
<FormSwitch v-model:value="showFixedPostForm">{{ $t('showFixedPostForm') }}</FormSwitch>
|
||||
<FormSwitch v-model:value="showFixedPostForm">{{ $ts.showFixedPostForm }}</FormSwitch>
|
||||
|
||||
<FormSelect v-model:value="lang">
|
||||
<template #label>{{ $t('uiLanguage') }}</template>
|
||||
<template #label>{{ $ts.uiLanguage }}</template>
|
||||
<option v-for="x in langs" :value="x[0]" :key="x[0]">{{ x[1] }}</option>
|
||||
<template #caption>
|
||||
<I18n src="i18nInfo" tag="span">
|
||||
<I18n :src="$ts.i18nInfo" tag="span">
|
||||
<template #link>
|
||||
<MkLink url="https://crowdin.com/project/misskey">Crowdin</MkLink>
|
||||
</template>
|
||||
|
@ -15,35 +15,35 @@
|
|||
</FormSelect>
|
||||
|
||||
<FormGroup>
|
||||
<template #label>{{ $t('behavior') }}</template>
|
||||
<FormSwitch v-model:value="imageNewTab">{{ $t('openImageInNewTab') }}</FormSwitch>
|
||||
<FormSwitch v-model:value="enableInfiniteScroll">{{ $t('enableInfiniteScroll') }}</FormSwitch>
|
||||
<FormSwitch v-model:value="disablePagesScript">{{ $t('disablePagesScript') }}</FormSwitch>
|
||||
<template #label>{{ $ts.behavior }}</template>
|
||||
<FormSwitch v-model:value="imageNewTab">{{ $ts.openImageInNewTab }}</FormSwitch>
|
||||
<FormSwitch v-model:value="enableInfiniteScroll">{{ $ts.enableInfiniteScroll }}</FormSwitch>
|
||||
<FormSwitch v-model:value="disablePagesScript">{{ $ts.disablePagesScript }}</FormSwitch>
|
||||
</FormGroup>
|
||||
|
||||
<FormSelect v-model:value="serverDisconnectedBehavior">
|
||||
<template #label>{{ $t('whenServerDisconnected') }}</template>
|
||||
<option value="reload">{{ $t('_serverDisconnectedBehavior.reload') }}</option>
|
||||
<option value="dialog">{{ $t('_serverDisconnectedBehavior.dialog') }}</option>
|
||||
<option value="quiet">{{ $t('_serverDisconnectedBehavior.quiet') }}</option>
|
||||
<template #label>{{ $ts.whenServerDisconnected }}</template>
|
||||
<option value="reload">{{ $ts._serverDisconnectedBehavior.reload }}</option>
|
||||
<option value="dialog">{{ $ts._serverDisconnectedBehavior.dialog }}</option>
|
||||
<option value="quiet">{{ $ts._serverDisconnectedBehavior.quiet }}</option>
|
||||
</FormSelect>
|
||||
|
||||
<FormGroup>
|
||||
<template #label>{{ $t('appearance') }}</template>
|
||||
<FormSwitch v-model:value="disableAnimatedMfm">{{ $t('disableAnimatedMfm') }}</FormSwitch>
|
||||
<FormSwitch v-model:value="reduceAnimation">{{ $t('reduceUiAnimation') }}</FormSwitch>
|
||||
<FormSwitch v-model:value="useBlurEffectForModal">{{ $t('useBlurEffectForModal') }}</FormSwitch>
|
||||
<FormSwitch v-model:value="showGapBetweenNotesInTimeline">{{ $t('showGapBetweenNotesInTimeline') }}</FormSwitch>
|
||||
<FormSwitch v-model:value="loadRawImages">{{ $t('loadRawImages') }}</FormSwitch>
|
||||
<FormSwitch v-model:value="disableShowingAnimatedImages">{{ $t('disableShowingAnimatedImages') }}</FormSwitch>
|
||||
<FormSwitch v-model:value="useSystemFont">{{ $t('useSystemFont') }}</FormSwitch>
|
||||
<FormSwitch v-model:value="useOsNativeEmojis">{{ $t('useOsNativeEmojis') }}
|
||||
<template #label>{{ $ts.appearance }}</template>
|
||||
<FormSwitch v-model:value="disableAnimatedMfm">{{ $ts.disableAnimatedMfm }}</FormSwitch>
|
||||
<FormSwitch v-model:value="reduceAnimation">{{ $ts.reduceUiAnimation }}</FormSwitch>
|
||||
<FormSwitch v-model:value="useBlurEffectForModal">{{ $ts.useBlurEffectForModal }}</FormSwitch>
|
||||
<FormSwitch v-model:value="showGapBetweenNotesInTimeline">{{ $ts.showGapBetweenNotesInTimeline }}</FormSwitch>
|
||||
<FormSwitch v-model:value="loadRawImages">{{ $ts.loadRawImages }}</FormSwitch>
|
||||
<FormSwitch v-model:value="disableShowingAnimatedImages">{{ $ts.disableShowingAnimatedImages }}</FormSwitch>
|
||||
<FormSwitch v-model:value="useSystemFont">{{ $ts.useSystemFont }}</FormSwitch>
|
||||
<FormSwitch v-model:value="useOsNativeEmojis">{{ $ts.useOsNativeEmojis }}
|
||||
<div><Mfm text="🍮🍦🍭🍩🍰🍫🍬🥞🍪" :key="useOsNativeEmojis"/></div>
|
||||
</FormSwitch>
|
||||
</FormGroup>
|
||||
|
||||
<FormRadios v-model="fontSize">
|
||||
<template #desc>{{ $t('fontSize') }}</template>
|
||||
<template #desc>{{ $ts.fontSize }}</template>
|
||||
<option value="small"><span style="font-size: 14px;">Aa</span></option>
|
||||
<option :value="null"><span style="font-size: 16px;">Aa</span></option>
|
||||
<option value="large"><span style="font-size: 18px;">Aa</span></option>
|
||||
|
@ -51,34 +51,34 @@
|
|||
</FormRadios>
|
||||
|
||||
<FormSelect v-model:value="instanceTicker">
|
||||
<template #label>{{ $t('instanceTicker') }}</template>
|
||||
<option value="none">{{ $t('_instanceTicker.none') }}</option>
|
||||
<option value="remote">{{ $t('_instanceTicker.remote') }}</option>
|
||||
<option value="always">{{ $t('_instanceTicker.always') }}</option>
|
||||
<template #label>{{ $ts.instanceTicker }}</template>
|
||||
<option value="none">{{ $ts._instanceTicker.none }}</option>
|
||||
<option value="remote">{{ $ts._instanceTicker.remote }}</option>
|
||||
<option value="always">{{ $ts._instanceTicker.always }}</option>
|
||||
</FormSelect>
|
||||
|
||||
<FormSelect v-model:value="nsfw">
|
||||
<template #label>{{ $t('nsfw') }}</template>
|
||||
<option value="respect">{{ $t('_nsfw.respect') }}</option>
|
||||
<option value="ignore">{{ $t('_nsfw.ignore') }}</option>
|
||||
<option value="force">{{ $t('_nsfw.force') }}</option>
|
||||
<template #label>{{ $ts.nsfw }}</template>
|
||||
<option value="respect">{{ $ts._nsfw.respect }}</option>
|
||||
<option value="ignore">{{ $ts._nsfw.ignore }}</option>
|
||||
<option value="force">{{ $ts._nsfw.force }}</option>
|
||||
</FormSelect>
|
||||
|
||||
<FormGroup>
|
||||
<template #label>{{ $t('defaultNavigationBehaviour') }}</template>
|
||||
<FormSwitch v-model:value="defaultSideView">{{ $t('openInSideView') }}</FormSwitch>
|
||||
<template #label>{{ $ts.defaultNavigationBehaviour }}</template>
|
||||
<FormSwitch v-model:value="defaultSideView">{{ $ts.openInSideView }}</FormSwitch>
|
||||
</FormGroup>
|
||||
|
||||
<FormSelect v-model:value="chatOpenBehavior">
|
||||
<template #label>{{ $t('chatOpenBehavior') }}</template>
|
||||
<option value="page">{{ $t('showInPage') }}</option>
|
||||
<option value="window">{{ $t('openInWindow') }}</option>
|
||||
<option value="popout">{{ $t('popout') }}</option>
|
||||
<template #label>{{ $ts.chatOpenBehavior }}</template>
|
||||
<option value="page">{{ $ts.showInPage }}</option>
|
||||
<option value="window">{{ $ts.openInWindow }}</option>
|
||||
<option value="popout">{{ $ts.popout }}</option>
|
||||
</FormSelect>
|
||||
|
||||
<FormLink to="/settings/deck">{{ $t('deck') }}</FormLink>
|
||||
<FormLink to="/settings/deck">{{ $ts.deck }}</FormLink>
|
||||
|
||||
<FormButton @click="cacheClear()" danger>{{ $t('cacheClear') }}</FormButton>
|
||||
<FormButton @click="cacheClear()" danger>{{ $ts.cacheClear }}</FormButton>
|
||||
</FormBase>
|
||||
</template>
|
||||
|
||||
|
@ -116,7 +116,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('general'),
|
||||
title: this.$ts.general,
|
||||
icon: faCogs
|
||||
},
|
||||
langs,
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
<template>
|
||||
<section class="_section">
|
||||
<div class="_title"><Fa :icon="faBoxes"/> {{ $t('importAndExport') }}</div>
|
||||
<div class="_title"><Fa :icon="faBoxes"/> {{ $ts.importAndExport }}</div>
|
||||
<div class="_content">
|
||||
<MkSelect v-model:value="exportTarget">
|
||||
<option value="notes">{{ $t('_exportOrImport.allNotes') }}</option>
|
||||
<option value="following">{{ $t('_exportOrImport.followingList') }}</option>
|
||||
<option value="user-lists">{{ $t('_exportOrImport.userLists') }}</option>
|
||||
<option value="mute">{{ $t('_exportOrImport.muteList') }}</option>
|
||||
<option value="blocking">{{ $t('_exportOrImport.blockingList') }}</option>
|
||||
<option value="notes">{{ $ts._exportOrImport.allNotes }}</option>
|
||||
<option value="following">{{ $ts._exportOrImport.followingList }}</option>
|
||||
<option value="user-lists">{{ $ts._exportOrImport.userLists }}</option>
|
||||
<option value="mute">{{ $ts._exportOrImport.muteList }}</option>
|
||||
<option value="blocking">{{ $ts._exportOrImport.blockingList }}</option>
|
||||
</MkSelect>
|
||||
<MkButton inline primary @click="doExport"><Fa :icon="faDownload"/> {{ $t('export') }}</MkButton>
|
||||
<MkButton inline primary @click="doImport" :disabled="!['following', 'user-lists'].includes(exportTarget)"><Fa :icon="faUpload"/> {{ $t('import') }}</MkButton>
|
||||
<MkButton inline primary @click="doExport"><Fa :icon="faDownload"/> {{ $ts.export }}</MkButton>
|
||||
<MkButton inline primary @click="doImport" :disabled="!['following', 'user-lists'].includes(exportTarget)"><Fa :icon="faUpload"/> {{ $ts.import }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
@ -48,7 +48,7 @@ export default defineComponent({
|
|||
.then(() => {
|
||||
os.dialog({
|
||||
type: 'info',
|
||||
text: this.$t('exportRequested')
|
||||
text: this.$ts.exportRequested
|
||||
});
|
||||
}).catch((e: any) => {
|
||||
os.dialog({
|
||||
|
@ -69,7 +69,7 @@ export default defineComponent({
|
|||
}).then(() => {
|
||||
os.dialog({
|
||||
type: 'info',
|
||||
text: this.$t('importRequested')
|
||||
text: this.$ts.importRequested
|
||||
});
|
||||
}).catch((e: any) => {
|
||||
os.dialog({
|
||||
|
|
|
@ -2,33 +2,33 @@
|
|||
<div class="vvcocwet" :class="{ wide: !narrow }" ref="el">
|
||||
<FormBase class="nav" v-if="!narrow || page == null" :force-wide="!narrow">
|
||||
<FormGroup>
|
||||
<template #label>{{ $t('basicSettings') }}</template>
|
||||
<FormLink :active="page === 'profile'" replace to="/settings/profile"><template #icon><Fa :icon="faUser"/></template>{{ $t('profile') }}</FormLink>
|
||||
<FormLink :active="page === 'privacy'" replace to="/settings/privacy"><template #icon><Fa :icon="faLockOpen"/></template>{{ $t('privacy') }}</FormLink>
|
||||
<FormLink :active="page === 'reaction'" replace to="/settings/reaction"><template #icon><Fa :icon="faLaugh"/></template>{{ $t('reaction') }}</FormLink>
|
||||
<FormLink :active="page === 'notifications'" replace to="/settings/notifications"><template #icon><Fa :icon="faBell"/></template>{{ $t('notifications') }}</FormLink>
|
||||
<FormLink :active="page === 'email'" replace to="/settings/email"><template #icon><Fa :icon="faEnvelope"/></template>{{ $t('email') }}</FormLink>
|
||||
<FormLink :active="page === 'integration'" replace to="/settings/integration"><template #icon><Fa :icon="faShareAlt"/></template>{{ $t('integration') }}</FormLink>
|
||||
<FormLink :active="page === 'security'" replace to="/settings/security"><template #icon><Fa :icon="faLock"/></template>{{ $t('security') }}</FormLink>
|
||||
<template #label>{{ $ts.basicSettings }}</template>
|
||||
<FormLink :active="page === 'profile'" replace to="/settings/profile"><template #icon><Fa :icon="faUser"/></template>{{ $ts.profile }}</FormLink>
|
||||
<FormLink :active="page === 'privacy'" replace to="/settings/privacy"><template #icon><Fa :icon="faLockOpen"/></template>{{ $ts.privacy }}</FormLink>
|
||||
<FormLink :active="page === 'reaction'" replace to="/settings/reaction"><template #icon><Fa :icon="faLaugh"/></template>{{ $ts.reaction }}</FormLink>
|
||||
<FormLink :active="page === 'notifications'" replace to="/settings/notifications"><template #icon><Fa :icon="faBell"/></template>{{ $ts.notifications }}</FormLink>
|
||||
<FormLink :active="page === 'email'" replace to="/settings/email"><template #icon><Fa :icon="faEnvelope"/></template>{{ $ts.email }}</FormLink>
|
||||
<FormLink :active="page === 'integration'" replace to="/settings/integration"><template #icon><Fa :icon="faShareAlt"/></template>{{ $ts.integration }}</FormLink>
|
||||
<FormLink :active="page === 'security'" replace to="/settings/security"><template #icon><Fa :icon="faLock"/></template>{{ $ts.security }}</FormLink>
|
||||
</FormGroup>
|
||||
<FormGroup>
|
||||
<template #label>{{ $t('clientSettings') }}</template>
|
||||
<FormLink :active="page === 'general'" replace to="/settings/general"><template #icon><Fa :icon="faCogs"/></template>{{ $t('general') }}</FormLink>
|
||||
<FormLink :active="page === 'theme'" replace to="/settings/theme"><template #icon><Fa :icon="faPalette"/></template>{{ $t('theme') }}</FormLink>
|
||||
<FormLink :active="page === 'sidebar'" replace to="/settings/sidebar"><template #icon><Fa :icon="faListUl"/></template>{{ $t('sidebar') }}</FormLink>
|
||||
<FormLink :active="page === 'sounds'" replace to="/settings/sounds"><template #icon><Fa :icon="faMusic"/></template>{{ $t('sounds') }}</FormLink>
|
||||
<FormLink :active="page === 'plugins'" replace to="/settings/plugins"><template #icon><Fa :icon="faPlug"/></template>{{ $t('plugins') }}</FormLink>
|
||||
<template #label>{{ $ts.clientSettings }}</template>
|
||||
<FormLink :active="page === 'general'" replace to="/settings/general"><template #icon><Fa :icon="faCogs"/></template>{{ $ts.general }}</FormLink>
|
||||
<FormLink :active="page === 'theme'" replace to="/settings/theme"><template #icon><Fa :icon="faPalette"/></template>{{ $ts.theme }}</FormLink>
|
||||
<FormLink :active="page === 'sidebar'" replace to="/settings/sidebar"><template #icon><Fa :icon="faListUl"/></template>{{ $ts.sidebar }}</FormLink>
|
||||
<FormLink :active="page === 'sounds'" replace to="/settings/sounds"><template #icon><Fa :icon="faMusic"/></template>{{ $ts.sounds }}</FormLink>
|
||||
<FormLink :active="page === 'plugins'" replace to="/settings/plugins"><template #icon><Fa :icon="faPlug"/></template>{{ $ts.plugins }}</FormLink>
|
||||
</FormGroup>
|
||||
<FormGroup>
|
||||
<template #label>{{ $t('otherSettings') }}</template>
|
||||
<FormLink :active="page === 'import-export'" replace to="/settings/import-export"><template #icon><Fa :icon="faBoxes"/></template>{{ $t('importAndExport') }}</FormLink>
|
||||
<FormLink :active="page === 'mute-block'" replace to="/settings/mute-block"><template #icon><Fa :icon="faBan"/></template>{{ $t('muteAndBlock') }}</FormLink>
|
||||
<FormLink :active="page === 'word-mute'" replace to="/settings/word-mute"><template #icon><Fa :icon="faCommentSlash"/></template>{{ $t('wordMute') }}</FormLink>
|
||||
<template #label>{{ $ts.otherSettings }}</template>
|
||||
<FormLink :active="page === 'import-export'" replace to="/settings/import-export"><template #icon><Fa :icon="faBoxes"/></template>{{ $ts.importAndExport }}</FormLink>
|
||||
<FormLink :active="page === 'mute-block'" replace to="/settings/mute-block"><template #icon><Fa :icon="faBan"/></template>{{ $ts.muteAndBlock }}</FormLink>
|
||||
<FormLink :active="page === 'word-mute'" replace to="/settings/word-mute"><template #icon><Fa :icon="faCommentSlash"/></template>{{ $ts.wordMute }}</FormLink>
|
||||
<FormLink :active="page === 'api'" replace to="/settings/api"><template #icon><Fa :icon="faKey"/></template>API</FormLink>
|
||||
<FormLink :active="page === 'other'" replace to="/settings/other"><template #icon><Fa :icon="faEllipsisH"/></template>{{ $t('other') }}</FormLink>
|
||||
<FormLink :active="page === 'other'" replace to="/settings/other"><template #icon><Fa :icon="faEllipsisH"/></template>{{ $ts.other }}</FormLink>
|
||||
</FormGroup>
|
||||
<FormGroup>
|
||||
<FormButton @click="logout" danger>{{ $t('logout') }}</FormButton>
|
||||
<FormButton @click="logout" danger>{{ $ts.logout }}</FormButton>
|
||||
</FormGroup>
|
||||
</FormBase>
|
||||
<div class="main">
|
||||
|
|
|
@ -2,23 +2,23 @@
|
|||
<section class="_section">
|
||||
<div class="_content" v-if="enableTwitterIntegration">
|
||||
<header><Fa :icon="faTwitter"/> Twitter</header>
|
||||
<p v-if="integrations.twitter">{{ $t('connectedTo') }}: <a :href="`https://twitter.com/${integrations.twitter.screenName}`" rel="nofollow noopener" target="_blank">@{{ integrations.twitter.screenName }}</a></p>
|
||||
<MkButton v-if="integrations.twitter" @click="disconnectTwitter">{{ $t('disconnectSerice') }}</MkButton>
|
||||
<MkButton v-else @click="connectTwitter">{{ $t('connectSerice') }}</MkButton>
|
||||
<p v-if="integrations.twitter">{{ $ts.connectedTo }}: <a :href="`https://twitter.com/${integrations.twitter.screenName}`" rel="nofollow noopener" target="_blank">@{{ integrations.twitter.screenName }}</a></p>
|
||||
<MkButton v-if="integrations.twitter" @click="disconnectTwitter">{{ $ts.disconnectSerice }}</MkButton>
|
||||
<MkButton v-else @click="connectTwitter">{{ $ts.connectSerice }}</MkButton>
|
||||
</div>
|
||||
|
||||
<div class="_content" v-if="enableDiscordIntegration">
|
||||
<header><Fa :icon="faDiscord"/> Discord</header>
|
||||
<p v-if="integrations.discord">{{ $t('connectedTo') }}: <a :href="`https://discordapp.com/users/${integrations.discord.id}`" rel="nofollow noopener" target="_blank">@{{ integrations.discord.username }}#{{ integrations.discord.discriminator }}</a></p>
|
||||
<MkButton v-if="integrations.discord" @click="disconnectDiscord">{{ $t('disconnectSerice') }}</MkButton>
|
||||
<MkButton v-else @click="connectDiscord">{{ $t('connectSerice') }}</MkButton>
|
||||
<p v-if="integrations.discord">{{ $ts.connectedTo }}: <a :href="`https://discordapp.com/users/${integrations.discord.id}`" rel="nofollow noopener" target="_blank">@{{ integrations.discord.username }}#{{ integrations.discord.discriminator }}</a></p>
|
||||
<MkButton v-if="integrations.discord" @click="disconnectDiscord">{{ $ts.disconnectSerice }}</MkButton>
|
||||
<MkButton v-else @click="connectDiscord">{{ $ts.connectSerice }}</MkButton>
|
||||
</div>
|
||||
|
||||
<div class="_content" v-if="enableGithubIntegration">
|
||||
<header><Fa :icon="faGithub"/> GitHub</header>
|
||||
<p v-if="integrations.github">{{ $t('connectedTo') }}: <a :href="`https://github.com/${integrations.github.login}`" rel="nofollow noopener" target="_blank">@{{ integrations.github.login }}</a></p>
|
||||
<MkButton v-if="integrations.github" @click="disconnectGithub">{{ $t('disconnectSerice') }}</MkButton>
|
||||
<MkButton v-else @click="connectGithub">{{ $t('connectSerice') }}</MkButton>
|
||||
<p v-if="integrations.github">{{ $ts.connectedTo }}: <a :href="`https://github.com/${integrations.github.login}`" rel="nofollow noopener" target="_blank">@{{ integrations.github.login }}</a></p>
|
||||
<MkButton v-if="integrations.github" @click="disconnectGithub">{{ $ts.disconnectSerice }}</MkButton>
|
||||
<MkButton v-else @click="connectGithub">{{ $ts.connectSerice }}</MkButton>
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
@ -41,7 +41,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('integration'),
|
||||
title: this.$ts.integration,
|
||||
icon: faShareAlt
|
||||
},
|
||||
apiUrl,
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<template>
|
||||
<section class="rrfwjxfl _section">
|
||||
<MkTab v-model:value="tab" style="margin-bottom: var(--margin);">
|
||||
<option value="mute">{{ $t('mutedUsers') }}</option>
|
||||
<option value="block">{{ $t('blockedUsers') }}</option>
|
||||
<option value="mute">{{ $ts.mutedUsers }}</option>
|
||||
<option value="block">{{ $ts.blockedUsers }}</option>
|
||||
</MkTab>
|
||||
<div class="_content" v-if="tab === 'mute'">
|
||||
<MkPagination :pagination="mutingPagination" class="muting">
|
||||
<template #empty><MkInfo>{{ $t('noUsers') }}</MkInfo></template>
|
||||
<template #empty><MkInfo>{{ $ts.noUsers }}</MkInfo></template>
|
||||
<template #default="{items}">
|
||||
<div class="user" v-for="mute in items" :key="mute.id">
|
||||
<MkA class="name" :to="userPage(mute.mutee)">
|
||||
|
@ -18,7 +18,7 @@
|
|||
</div>
|
||||
<div class="_content" v-if="tab === 'block'">
|
||||
<MkPagination :pagination="blockingPagination" class="blocking">
|
||||
<template #empty><MkInfo>{{ $t('noUsers') }}</MkInfo></template>
|
||||
<template #empty><MkInfo>{{ $ts.noUsers }}</MkInfo></template>
|
||||
<template #default="{items}">
|
||||
<div class="user" v-for="block in items" :key="block.id">
|
||||
<MkA class="name" :to="userPage(block.blockee)">
|
||||
|
@ -52,7 +52,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('muteAndBlock'),
|
||||
title: this.$ts.muteAndBlock,
|
||||
icon: faBan
|
||||
},
|
||||
tab: 'mute',
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
<template>
|
||||
<FormBase>
|
||||
<FormLink @click="configure">{{ $t('notificationSetting') }}</FormLink>
|
||||
<FormLink @click="configure">{{ $ts.notificationSetting }}</FormLink>
|
||||
<FormGroup>
|
||||
<FormButton @click="readAllNotifications">{{ $t('markAsReadAllNotifications') }}</FormButton>
|
||||
<FormButton @click="readAllUnreadNotes">{{ $t('markAsReadAllUnreadNotes') }}</FormButton>
|
||||
<FormButton @click="readAllMessagingMessages">{{ $t('markAsReadAllTalkMessages') }}</FormButton>
|
||||
<FormButton @click="readAllNotifications">{{ $ts.markAsReadAllNotifications }}</FormButton>
|
||||
<FormButton @click="readAllUnreadNotes">{{ $ts.markAsReadAllUnreadNotes }}</FormButton>
|
||||
<FormButton @click="readAllMessagingMessages">{{ $ts.markAsReadAllTalkMessages }}</FormButton>
|
||||
</FormGroup>
|
||||
</FormBase>
|
||||
</template>
|
||||
|
@ -33,7 +33,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('notifications'),
|
||||
title: this.$ts.notifications,
|
||||
icon: faBell
|
||||
},
|
||||
faCog
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
<template>
|
||||
<FormBase>
|
||||
<FormSwitch :value="$i.injectFeaturedNote" @update:value="onChangeInjectFeaturedNote">
|
||||
{{ $t('showFeaturedNotesInTimeline') }}
|
||||
{{ $ts.showFeaturedNotesInTimeline }}
|
||||
</FormSwitch>
|
||||
|
||||
<FormLink to="/settings/account-info">{{ $t('accountInfo') }}</FormLink>
|
||||
<FormLink to="/settings/experimental-features">{{ $t('experimentalFeatures') }}</FormLink>
|
||||
<FormLink to="/settings/account-info">{{ $ts.accountInfo }}</FormLink>
|
||||
<FormLink to="/settings/experimental-features">{{ $ts.experimentalFeatures }}</FormLink>
|
||||
|
||||
<FormGroup>
|
||||
<template #label>{{ $t('developer') }}</template>
|
||||
<template #label>{{ $ts.developer }}</template>
|
||||
<FormSwitch v-model:value="debug" @update:value="changeDebug">
|
||||
DEBUG MODE
|
||||
</FormSwitch>
|
||||
|
@ -47,7 +47,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('other'),
|
||||
title: this.$ts.other,
|
||||
icon: faEllipsisH
|
||||
},
|
||||
debug
|
||||
|
|
|
@ -1,41 +1,41 @@
|
|||
<template>
|
||||
<section class="_section">
|
||||
<div class="_title"><Fa :icon="faPlug"/> {{ $t('plugins') }}</div>
|
||||
<div class="_title"><Fa :icon="faPlug"/> {{ $ts.plugins }}</div>
|
||||
<div class="_content">
|
||||
<details>
|
||||
<summary><Fa :icon="faDownload"/> {{ $t('install') }}</summary>
|
||||
<MkInfo warn>{{ $t('pluginInstallWarn') }}</MkInfo>
|
||||
<summary><Fa :icon="faDownload"/> {{ $ts.install }}</summary>
|
||||
<MkInfo warn>{{ $ts.pluginInstallWarn }}</MkInfo>
|
||||
<MkTextarea v-model:value="script" tall>
|
||||
<span>{{ $t('script') }}</span>
|
||||
<span>{{ $ts.script }}</span>
|
||||
</MkTextarea>
|
||||
<MkButton @click="install()" primary><Fa :icon="faSave"/> {{ $t('install') }}</MkButton>
|
||||
<MkButton @click="install()" primary><Fa :icon="faSave"/> {{ $ts.install }}</MkButton>
|
||||
</details>
|
||||
</div>
|
||||
<div class="_content">
|
||||
<details>
|
||||
<summary><Fa :icon="faFolderOpen"/> {{ $t('manage') }}</summary>
|
||||
<summary><Fa :icon="faFolderOpen"/> {{ $ts.manage }}</summary>
|
||||
<MkSelect v-model:value="selectedPluginId">
|
||||
<option v-for="x in plugins" :value="x.id" :key="x.id">{{ x.name }}</option>
|
||||
</MkSelect>
|
||||
<template v-if="selectedPlugin">
|
||||
<div style="margin: -8px 0 8px 0;">
|
||||
<MkSwitch :value="selectedPlugin.active" @update:value="changeActive(selectedPlugin, $event)">{{ $t('makeActive') }}</MkSwitch>
|
||||
<MkSwitch :value="selectedPlugin.active" @update:value="changeActive(selectedPlugin, $event)">{{ $ts.makeActive }}</MkSwitch>
|
||||
</div>
|
||||
<div class="_keyValue">
|
||||
<div>{{ $t('version') }}:</div>
|
||||
<div>{{ $ts.version }}:</div>
|
||||
<div>{{ selectedPlugin.version }}</div>
|
||||
</div>
|
||||
<div class="_keyValue">
|
||||
<div>{{ $t('author') }}:</div>
|
||||
<div>{{ $ts.author }}:</div>
|
||||
<div>{{ selectedPlugin.author }}</div>
|
||||
</div>
|
||||
<div class="_keyValue">
|
||||
<div>{{ $t('description') }}:</div>
|
||||
<div>{{ $ts.description }}:</div>
|
||||
<div>{{ selectedPlugin.description }}</div>
|
||||
</div>
|
||||
<div style="margin-top: 8px;">
|
||||
<MkButton @click="config()" inline v-if="selectedPlugin.config"><Fa :icon="faCog"/> {{ $t('settings') }}</MkButton>
|
||||
<MkButton @click="uninstall()" inline><Fa :icon="faTrashAlt"/> {{ $t('uninstall') }}</MkButton>
|
||||
<MkButton @click="config()" inline v-if="selectedPlugin.config"><Fa :icon="faCog"/> {{ $ts.settings }}</MkButton>
|
||||
<MkButton @click="uninstall()" inline><Fa :icon="faTrashAlt"/> {{ $ts.uninstall }}</MkButton>
|
||||
</div>
|
||||
</template>
|
||||
</details>
|
||||
|
@ -132,8 +132,8 @@ export default defineComponent({
|
|||
|
||||
const token = permissions == null || permissions.length === 0 ? null : await new Promise((res, rej) => {
|
||||
os.popup(import('@/components/token-generate-window.vue'), {
|
||||
title: this.$t('tokenRequested'),
|
||||
information: this.$t('pluginTokenRequestedDescription'),
|
||||
title: this.$ts.tokenRequested,
|
||||
information: this.$ts.pluginTokenRequestedDescription,
|
||||
initialName: name,
|
||||
initialPermissions: permissions
|
||||
}, {
|
||||
|
|
|
@ -1,28 +1,28 @@
|
|||
<template>
|
||||
<FormBase>
|
||||
<FormGroup>
|
||||
<FormSwitch v-model:value="isLocked" @update:value="save()">{{ $t('makeFollowManuallyApprove') }}</FormSwitch>
|
||||
<FormSwitch v-model:value="autoAcceptFollowed" :disabled="!isLocked" @update:value="save()">{{ $t('autoAcceptFollowed') }}</FormSwitch>
|
||||
<template #caption>{{ $t('lockedAccountInfo') }}</template>
|
||||
<FormSwitch v-model:value="isLocked" @update:value="save()">{{ $ts.makeFollowManuallyApprove }}</FormSwitch>
|
||||
<FormSwitch v-model:value="autoAcceptFollowed" :disabled="!isLocked" @update:value="save()">{{ $ts.autoAcceptFollowed }}</FormSwitch>
|
||||
<template #caption>{{ $ts.lockedAccountInfo }}</template>
|
||||
</FormGroup>
|
||||
<FormSwitch v-model:value="noCrawle" @update:value="save()">
|
||||
{{ $t('noCrawle') }}
|
||||
<template #desc>{{ $t('noCrawleDescription') }}</template>
|
||||
{{ $ts.noCrawle }}
|
||||
<template #desc>{{ $ts.noCrawleDescription }}</template>
|
||||
</FormSwitch>
|
||||
<FormSwitch v-model:value="isExplorable" @update:value="save()">
|
||||
{{ $t('makeExplorable') }}
|
||||
<template #desc>{{ $t('makeExplorableDescription') }}</template>
|
||||
{{ $ts.makeExplorable }}
|
||||
<template #desc>{{ $ts.makeExplorableDescription }}</template>
|
||||
</FormSwitch>
|
||||
<FormSwitch v-model:value="rememberNoteVisibility" @update:value="save()">{{ $t('rememberNoteVisibility') }}</FormSwitch>
|
||||
<FormSwitch v-model:value="rememberNoteVisibility" @update:value="save()">{{ $ts.rememberNoteVisibility }}</FormSwitch>
|
||||
<FormGroup v-if="!rememberNoteVisibility">
|
||||
<template #label>{{ $t('defaultNoteVisibility') }}</template>
|
||||
<template #label>{{ $ts.defaultNoteVisibility }}</template>
|
||||
<FormSelect v-model:value="defaultNoteVisibility">
|
||||
<option value="public">{{ $t('_visibility.public') }}</option>
|
||||
<option value="home">{{ $t('_visibility.home') }}</option>
|
||||
<option value="followers">{{ $t('_visibility.followers') }}</option>
|
||||
<option value="specified">{{ $t('_visibility.specified') }}</option>
|
||||
<option value="public">{{ $ts._visibility.public }}</option>
|
||||
<option value="home">{{ $ts._visibility.home }}</option>
|
||||
<option value="followers">{{ $ts._visibility.followers }}</option>
|
||||
<option value="specified">{{ $ts._visibility.specified }}</option>
|
||||
</FormSelect>
|
||||
<FormSwitch v-model:value="defaultNoteLocalOnly">{{ $t('_visibility.localOnly') }}</FormSwitch>
|
||||
<FormSwitch v-model:value="defaultNoteLocalOnly">{{ $ts._visibility.localOnly }}</FormSwitch>
|
||||
</FormGroup>
|
||||
</FormBase>
|
||||
</template>
|
||||
|
@ -50,7 +50,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('privacy'),
|
||||
title: this.$ts.privacy,
|
||||
icon: faLockOpen
|
||||
},
|
||||
isLocked: false,
|
||||
|
|
|
@ -4,41 +4,41 @@
|
|||
<div class="_formItem _formPanel llvierxe" :style="{ backgroundImage: $i.bannerUrl ? `url(${ $i.bannerUrl })` : null }">
|
||||
<MkAvatar class="avatar" :user="$i"/>
|
||||
</div>
|
||||
<FormButton @click="changeAvatar" primary>{{ $t('_profile.changeAvatar') }}</FormButton>
|
||||
<FormButton @click="changeBanner" primary>{{ $t('_profile.changeBanner') }}</FormButton>
|
||||
<FormButton @click="changeAvatar" primary>{{ $ts._profile.changeAvatar }}</FormButton>
|
||||
<FormButton @click="changeBanner" primary>{{ $ts._profile.changeBanner }}</FormButton>
|
||||
</FormGroup>
|
||||
|
||||
<FormInput v-model:value="name" :max="30">
|
||||
<span>{{ $t('_profile.name') }}</span>
|
||||
<span>{{ $ts._profile.name }}</span>
|
||||
</FormInput>
|
||||
|
||||
<FormTextarea v-model:value="description" :max="500">
|
||||
<span>{{ $t('_profile.description') }}</span>
|
||||
<template #desc>{{ $t('_profile.youCanIncludeHashtags') }}</template>
|
||||
<span>{{ $ts._profile.description }}</span>
|
||||
<template #desc>{{ $ts._profile.youCanIncludeHashtags }}</template>
|
||||
</FormTextarea>
|
||||
|
||||
<FormInput v-model:value="location">
|
||||
<span>{{ $t('location') }}</span>
|
||||
<span>{{ $ts.location }}</span>
|
||||
<template #prefix><Fa :icon="faMapMarkerAlt"/></template>
|
||||
</FormInput>
|
||||
|
||||
<FormInput v-model:value="birthday" type="date">
|
||||
<span>{{ $t('birthday') }}</span>
|
||||
<span>{{ $ts.birthday }}</span>
|
||||
<template #prefix><Fa :icon="faBirthdayCake"/></template>
|
||||
</FormInput>
|
||||
|
||||
<FormGroup>
|
||||
<FormButton @click="editMetadata" primary>{{ $t('_profile.metadataEdit') }}</FormButton>
|
||||
<template #caption>{{ $t('_profile.metadataDescription') }}</template>
|
||||
<FormButton @click="editMetadata" primary>{{ $ts._profile.metadataEdit }}</FormButton>
|
||||
<template #caption>{{ $ts._profile.metadataDescription }}</template>
|
||||
</FormGroup>
|
||||
|
||||
<FormSwitch v-model:value="isCat">{{ $t('flagAsCat') }}<template #desc>{{ $t('flagAsCatDescription') }}</template></FormSwitch>
|
||||
<FormSwitch v-model:value="isCat">{{ $ts.flagAsCat }}<template #desc>{{ $ts.flagAsCatDescription }}</template></FormSwitch>
|
||||
|
||||
<FormSwitch v-model:value="isBot">{{ $t('flagAsBot') }}<template #desc>{{ $t('flagAsBotDescription') }}</template></FormSwitch>
|
||||
<FormSwitch v-model:value="isBot">{{ $ts.flagAsBot }}<template #desc>{{ $ts.flagAsBotDescription }}</template></FormSwitch>
|
||||
|
||||
<FormSwitch v-model:value="alwaysMarkNsfw">{{ $t('alwaysMarkSensitive') }}</FormSwitch>
|
||||
<FormSwitch v-model:value="alwaysMarkNsfw">{{ $ts.alwaysMarkSensitive }}</FormSwitch>
|
||||
|
||||
<FormButton @click="save(true)" primary><Fa :icon="faSave"/> {{ $t('save') }}</FormButton>
|
||||
<FormButton @click="save(true)" primary><Fa :icon="faSave"/> {{ $ts.save }}</FormButton>
|
||||
</FormBase>
|
||||
</template>
|
||||
|
||||
|
@ -73,7 +73,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('profile'),
|
||||
title: this.$ts.profile,
|
||||
icon: faUser
|
||||
},
|
||||
host,
|
||||
|
@ -126,7 +126,7 @@ export default defineComponent({
|
|||
|
||||
methods: {
|
||||
changeAvatar(e) {
|
||||
selectFile(e.currentTarget || e.target, this.$t('avatar')).then(file => {
|
||||
selectFile(e.currentTarget || e.target, this.$ts.avatar).then(file => {
|
||||
os.api('i/update', {
|
||||
avatarId: file.id,
|
||||
});
|
||||
|
@ -134,7 +134,7 @@ export default defineComponent({
|
|||
},
|
||||
|
||||
changeBanner(e) {
|
||||
selectFile(e.currentTarget || e.target, this.$t('banner')).then(file => {
|
||||
selectFile(e.currentTarget || e.target, this.$ts.banner).then(file => {
|
||||
os.api('i/update', {
|
||||
bannerId: file.id,
|
||||
});
|
||||
|
@ -142,45 +142,45 @@ export default defineComponent({
|
|||
},
|
||||
|
||||
async editMetadata() {
|
||||
const { canceled, result } = await os.form(this.$t('_profile.metadata'), {
|
||||
const { canceled, result } = await os.form(this.$ts._profile.metadata, {
|
||||
fieldName0: {
|
||||
type: 'string',
|
||||
label: this.$t('_profile.metadataLabel') + ' 1',
|
||||
label: this.$ts._profile.metadataLabel + ' 1',
|
||||
default: this.fieldName0,
|
||||
},
|
||||
fieldValue0: {
|
||||
type: 'string',
|
||||
label: this.$t('_profile.metadataContent') + ' 1',
|
||||
label: this.$ts._profile.metadataContent + ' 1',
|
||||
default: this.fieldValue0,
|
||||
},
|
||||
fieldName1: {
|
||||
type: 'string',
|
||||
label: this.$t('_profile.metadataLabel') + ' 2',
|
||||
label: this.$ts._profile.metadataLabel + ' 2',
|
||||
default: this.fieldName1,
|
||||
},
|
||||
fieldValue1: {
|
||||
type: 'string',
|
||||
label: this.$t('_profile.metadataContent') + ' 2',
|
||||
label: this.$ts._profile.metadataContent + ' 2',
|
||||
default: this.fieldValue1,
|
||||
},
|
||||
fieldName2: {
|
||||
type: 'string',
|
||||
label: this.$t('_profile.metadataLabel') + ' 3',
|
||||
label: this.$ts._profile.metadataLabel + ' 3',
|
||||
default: this.fieldName2,
|
||||
},
|
||||
fieldValue2: {
|
||||
type: 'string',
|
||||
label: this.$t('_profile.metadataContent') + ' 3',
|
||||
label: this.$ts._profile.metadataContent + ' 3',
|
||||
default: this.fieldValue2,
|
||||
},
|
||||
fieldName3: {
|
||||
type: 'string',
|
||||
label: this.$t('_profile.metadataLabel') + ' 4',
|
||||
label: this.$ts._profile.metadataLabel + ' 4',
|
||||
default: this.fieldName3,
|
||||
},
|
||||
fieldValue3: {
|
||||
type: 'string',
|
||||
label: this.$t('_profile.metadataContent') + ' 4',
|
||||
label: this.$ts._profile.metadataContent + ' 4',
|
||||
default: this.fieldValue3,
|
||||
},
|
||||
});
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<FormBase>
|
||||
<div class="_formItem">
|
||||
<div class="_formLabel">{{ $t('reactionSettingDescription') }}</div>
|
||||
<div class="_formLabel">{{ $ts.reactionSettingDescription }}</div>
|
||||
<div class="_formPanel">
|
||||
<XDraggable class="zoaiodol" v-model="reactions" :item-key="item => item" animation="150" delay="100" delay-on-touch-only="true">
|
||||
<template #item="{element}">
|
||||
|
@ -14,23 +14,23 @@
|
|||
</template>
|
||||
</XDraggable>
|
||||
</div>
|
||||
<div class="_formCaption">{{ $t('reactionSettingDescription2') }} <button class="_textButton" @click="preview">{{ $t('preview') }}</button></div>
|
||||
<div class="_formCaption">{{ $ts.reactionSettingDescription2 }} <button class="_textButton" @click="preview">{{ $ts.preview }}</button></div>
|
||||
</div>
|
||||
|
||||
<FormRadios v-model="reactionPickerWidth">
|
||||
<template #desc>{{ $t('width') }}</template>
|
||||
<option :value="1">{{ $t('small') }}</option>
|
||||
<option :value="2">{{ $t('medium') }}</option>
|
||||
<option :value="3">{{ $t('large') }}</option>
|
||||
<template #desc>{{ $ts.width }}</template>
|
||||
<option :value="1">{{ $ts.small }}</option>
|
||||
<option :value="2">{{ $ts.medium }}</option>
|
||||
<option :value="3">{{ $ts.large }}</option>
|
||||
</FormRadios>
|
||||
<FormRadios v-model="reactionPickerHeight">
|
||||
<template #desc>{{ $t('height') }}</template>
|
||||
<option :value="1">{{ $t('small') }}</option>
|
||||
<option :value="2">{{ $t('medium') }}</option>
|
||||
<option :value="3">{{ $t('large') }}</option>
|
||||
<template #desc>{{ $ts.height }}</template>
|
||||
<option :value="1">{{ $ts.small }}</option>
|
||||
<option :value="2">{{ $ts.medium }}</option>
|
||||
<option :value="3">{{ $ts.large }}</option>
|
||||
</FormRadios>
|
||||
<FormButton @click="preview"><Fa :icon="faEye"/> {{ $t('preview') }}</FormButton>
|
||||
<FormButton danger @click="setDefault"><Fa :icon="faUndo"/> {{ $t('default') }}</FormButton>
|
||||
<FormButton @click="preview"><Fa :icon="faEye"/> {{ $ts.preview }}</FormButton>
|
||||
<FormButton danger @click="setDefault"><Fa :icon="faUndo"/> {{ $ts.default }}</FormButton>
|
||||
</FormBase>
|
||||
</template>
|
||||
|
||||
|
@ -60,7 +60,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('reaction'),
|
||||
title: this.$ts.reaction,
|
||||
icon: faLaugh,
|
||||
action: {
|
||||
icon: faEye,
|
||||
|
@ -97,7 +97,7 @@ export default defineComponent({
|
|||
|
||||
remove(reaction, ev) {
|
||||
os.modalMenu([{
|
||||
text: this.$t('remove'),
|
||||
text: this.$ts.remove,
|
||||
action: () => {
|
||||
this.reactions = this.reactions.filter(x => x !== reaction)
|
||||
}
|
||||
|
@ -114,7 +114,7 @@ export default defineComponent({
|
|||
async setDefault() {
|
||||
const { canceled } = await os.dialog({
|
||||
type: 'warning',
|
||||
text: this.$t('resetAreYouSure'),
|
||||
text: this.$ts.resetAreYouSure,
|
||||
showCancelButton: true
|
||||
});
|
||||
if (canceled) return;
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
<template>
|
||||
<FormBase>
|
||||
<X2fa/>
|
||||
<FormLink to="/settings/2fa"><template #icon><Fa :icon="faMobileAlt"/></template>{{ $t('twoStepAuthentication') }}</FormLink>
|
||||
<FormButton primary @click="change()">{{ $t('changePassword') }}</FormButton>
|
||||
<FormLink to="/settings/2fa"><template #icon><Fa :icon="faMobileAlt"/></template>{{ $ts.twoStepAuthentication }}</FormLink>
|
||||
<FormButton primary @click="change()">{{ $ts.changePassword }}</FormButton>
|
||||
<FormPagination :pagination="pagination">
|
||||
<template #label>{{ $t('signinHistory') }}</template>
|
||||
<template #label>{{ $ts.signinHistory }}</template>
|
||||
<template #default="{items}">
|
||||
<div class="_formPanel timnmucd" v-for="item in items" :key="item.id">
|
||||
<header>
|
||||
|
@ -17,8 +17,8 @@
|
|||
</template>
|
||||
</FormPagination>
|
||||
<FormGroup>
|
||||
<FormButton danger @click="regenerateToken"><Fa :icon="faSyncAlt"/> {{ $t('regenerateLoginToken') }}</FormButton>
|
||||
<template #caption>{{ $t('regenerateLoginTokenDescription') }}</template>
|
||||
<FormButton danger @click="regenerateToken"><Fa :icon="faSyncAlt"/> {{ $ts.regenerateLoginToken }}</FormButton>
|
||||
<template #caption>{{ $ts.regenerateLoginTokenDescription }}</template>
|
||||
</FormGroup>
|
||||
</FormBase>
|
||||
</template>
|
||||
|
@ -47,7 +47,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('security'),
|
||||
title: this.$ts.security,
|
||||
icon: faLock
|
||||
},
|
||||
pagination: {
|
||||
|
@ -65,7 +65,7 @@ export default defineComponent({
|
|||
methods: {
|
||||
async change() {
|
||||
const { canceled: canceled1, result: currentPassword } = await os.dialog({
|
||||
title: this.$t('currentPassword'),
|
||||
title: this.$ts.currentPassword,
|
||||
input: {
|
||||
type: 'password'
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ export default defineComponent({
|
|||
if (canceled1) return;
|
||||
|
||||
const { canceled: canceled2, result: newPassword } = await os.dialog({
|
||||
title: this.$t('newPassword'),
|
||||
title: this.$ts.newPassword,
|
||||
input: {
|
||||
type: 'password'
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ export default defineComponent({
|
|||
if (canceled2) return;
|
||||
|
||||
const { canceled: canceled3, result: newPassword2 } = await os.dialog({
|
||||
title: this.$t('newPasswordRetype'),
|
||||
title: this.$ts.newPasswordRetype,
|
||||
input: {
|
||||
type: 'password'
|
||||
}
|
||||
|
@ -91,7 +91,7 @@ export default defineComponent({
|
|||
if (newPassword !== newPassword2) {
|
||||
os.dialog({
|
||||
type: 'error',
|
||||
text: this.$t('retypedNotMatch')
|
||||
text: this.$ts.retypedNotMatch
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
@ -104,7 +104,7 @@ export default defineComponent({
|
|||
|
||||
regenerateToken() {
|
||||
os.dialog({
|
||||
title: this.$t('password'),
|
||||
title: this.$ts.password,
|
||||
input: {
|
||||
type: 'password'
|
||||
}
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
<template>
|
||||
<FormBase>
|
||||
<FormTextarea v-model:value="items" tall>
|
||||
<span>{{ $t('sidebar') }}</span>
|
||||
<template #desc><button class="_textButton" @click="addItem">{{ $t('addItem') }}</button></template>
|
||||
<span>{{ $ts.sidebar }}</span>
|
||||
<template #desc><button class="_textButton" @click="addItem">{{ $ts.addItem }}</button></template>
|
||||
</FormTextarea>
|
||||
|
||||
<FormRadios v-model="sidebarDisplay">
|
||||
<template #desc>{{ $t('display') }}</template>
|
||||
<option value="full">{{ $t('_sidebar.full') }}</option>
|
||||
<option value="icon">{{ $t('_sidebar.icon') }}</option>
|
||||
<!-- <MkRadio v-model="sidebarDisplay" value="hide" disabled>{{ $t('_sidebar.hide') }}</MkRadio>--> <!-- TODO: サイドバーを完全に隠せるようにすると、別途ハンバーガーボタンのようなものをUIに表示する必要があり面倒 -->
|
||||
<template #desc>{{ $ts.display }}</template>
|
||||
<option value="full">{{ $ts._sidebar.full }}</option>
|
||||
<option value="icon">{{ $ts._sidebar.icon }}</option>
|
||||
<!-- <MkRadio v-model="sidebarDisplay" value="hide" disabled>{{ $ts._sidebar.hide }}</MkRadio>--> <!-- TODO: サイドバーを完全に隠せるようにすると、別途ハンバーガーボタンのようなものをUIに表示する必要があり面倒 -->
|
||||
</FormRadios>
|
||||
|
||||
<FormButton @click="save()" primary><Fa :icon="faSave"/> {{ $t('save') }}</FormButton>
|
||||
<FormButton @click="reset()" danger><Fa :icon="faRedo"/> {{ $t('default') }}</FormButton>
|
||||
<FormButton @click="save()" primary><Fa :icon="faSave"/> {{ $ts.save }}</FormButton>
|
||||
<FormButton @click="reset()" danger><Fa :icon="faRedo"/> {{ $ts.default }}</FormButton>
|
||||
</FormBase>
|
||||
</template>
|
||||
|
||||
|
@ -43,7 +43,7 @@ export default defineComponent({
|
|||
data() {
|
||||
return {
|
||||
INFO: {
|
||||
title: this.$t('sidebar'),
|
||||
title: this.$ts.sidebar,
|
||||
icon: faListUl
|
||||
},
|
||||
menuDef: sidebarDef,
|
||||
|
@ -73,12 +73,12 @@ export default defineComponent({
|
|||
const menu = Object.keys(this.menuDef).filter(k => !this.$store.state.menu.includes(k));
|
||||
const { canceled, result: item } = await os.dialog({
|
||||
type: null,
|
||||
title: this.$t('addItem'),
|
||||
title: this.$ts.addItem,
|
||||
select: {
|
||||
items: [...menu.map(k => ({
|
||||
value: k, text: this.$t(this.menuDef[k].title)
|
||||
})), ...[{
|
||||
value: '-', text: this.$t('divider')
|
||||
value: '-', text: this.$ts.divider
|
||||
}]]
|
||||
},
|
||||
showCancelButton: true
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue