diff options
| author | syuilo <4439005+syuilo@users.noreply.github.com> | 2024-05-31 13:19:49 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-31 13:19:49 +0900 |
| commit | dfeaa1145b61dde4edeff452f5308e11a1ef19a2 (patch) | |
| tree | 1dbdce2e26afd2cfd0cf1e97ac5a843446647626 /packages/frontend/src | |
| parent | Bump version to 2024.5.0-rc.7 (diff) | |
| parent | New Crowdin updates (#13892) (diff) | |
| download | sharkey-dfeaa1145b61dde4edeff452f5308e11a1ef19a2.tar.gz sharkey-dfeaa1145b61dde4edeff452f5308e11a1ef19a2.tar.bz2 sharkey-dfeaa1145b61dde4edeff452f5308e11a1ef19a2.zip | |
Merge branch 'develop' into release/2024.5.0
Diffstat (limited to 'packages/frontend/src')
| -rw-r--r-- | packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue | 108 | ||||
| -rw-r--r-- | packages/frontend/src/pages/admin/moderation.vue | 9 | ||||
| -rw-r--r-- | packages/frontend/src/pages/contact.vue | 18 | ||||
| -rw-r--r-- | packages/frontend/src/scripts/collapsed.ts | 19 |
4 files changed, 92 insertions, 62 deletions
diff --git a/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue b/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue index 84b5375a41..c7f1288729 100644 --- a/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue +++ b/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue @@ -4,77 +4,81 @@ SPDX-License-Identifier: AGPL-3.0-only --> <template> - <MkModalWindow ref="dialogEl" @close="cancel()" @closed="$emit('closed')"> - <template #header>:{{ emoji.name }}:</template> - <template #default> - <MkSpacer> - <div style="display: flex; flex-direction: column; gap: 1em;"> - <div :class="$style.emojiImgWrapper"> - <MkCustomEmoji :name="emoji.name" :normal="true" :useOriginalSize="true" style="height: 100%;"></MkCustomEmoji> - </div> - <MkKeyValue :copy="`:${emoji.name}:`"> - <template #key>{{ i18n.ts.name }}</template> - <template #value>{{ emoji.name }}</template> - </MkKeyValue> - <MkKeyValue> - <template #key>{{ i18n.ts.tags }}</template> - <template #value> - <div v-if="emoji.aliases.length === 0">{{ i18n.ts.none }}</div> - <div v-else :class="$style.aliases"> - <span v-for="alias in emoji.aliases" :key="alias" :class="$style.alias"> - {{ alias }} - </span> - </div> - </template> - </MkKeyValue> - <MkKeyValue> - <template #key>{{ i18n.ts.category }}</template> - <template #value>{{ emoji.category ?? i18n.ts.none }}</template> - </MkKeyValue> - <MkKeyValue> - <template #key>{{ i18n.ts.sensitive }}</template> - <template #value>{{ emoji.isSensitive ? i18n.ts.yes : i18n.ts.no }}</template> - </MkKeyValue> - <MkKeyValue> - <template #key>{{ i18n.ts.localOnly }}</template> - <template #value>{{ emoji.localOnly ? i18n.ts.yes : i18n.ts.no }}</template> - </MkKeyValue> - <MkKeyValue> - <template #key>{{ i18n.ts.license }}</template> - <template #value><Mfm :text="emoji.license ?? i18n.ts.none" /></template> - </MkKeyValue> - <MkKeyValue :copy="emoji.url"> - <template #key>{{ i18n.ts.emojiUrl }}</template> - <template #value> - <MkLink :url="emoji.url" target="_blank">{{ emoji.url }}</MkLink> - </template> - </MkKeyValue> - </div> - </MkSpacer> - </template> - </MkModalWindow> +<MkModalWindow ref="dialogEl" @close="cancel()" @closed="$emit('closed')"> + <template #header>:{{ emoji.name }}:</template> + <template #default> + <MkSpacer> + <div style="display: flex; flex-direction: column; gap: 1em;"> + <div :class="$style.emojiImgWrapper"> + <MkCustomEmoji :name="emoji.name" :normal="true" :useOriginalSize="true" style="height: 100%;"></MkCustomEmoji> + </div> + <MkKeyValue :copy="`:${emoji.name}:`"> + <template #key>{{ i18n.ts.name }}</template> + <template #value>{{ emoji.name }}</template> + </MkKeyValue> + <MkKeyValue> + <template #key>{{ i18n.ts.tags }}</template> + <template #value> + <div v-if="emoji.aliases.length === 0">{{ i18n.ts.none }}</div> + <div v-else :class="$style.aliases"> + <span v-for="alias in emoji.aliases" :key="alias" :class="$style.alias"> + {{ alias }} + </span> + </div> + </template> + </MkKeyValue> + <MkKeyValue> + <template #key>{{ i18n.ts.category }}</template> + <template #value>{{ emoji.category ?? i18n.ts.none }}</template> + </MkKeyValue> + <MkKeyValue> + <template #key>{{ i18n.ts.sensitive }}</template> + <template #value>{{ emoji.isSensitive ? i18n.ts.yes : i18n.ts.no }}</template> + </MkKeyValue> + <MkKeyValue> + <template #key>{{ i18n.ts.localOnly }}</template> + <template #value>{{ emoji.localOnly ? i18n.ts.yes : i18n.ts.no }}</template> + </MkKeyValue> + <MkKeyValue> + <template #key>{{ i18n.ts.license }}</template> + <template #value><Mfm :text="emoji.license ?? i18n.ts.none"/></template> + </MkKeyValue> + <MkKeyValue :copy="emoji.url"> + <template #key>{{ i18n.ts.emojiUrl }}</template> + <template #value> + <MkLink :url="emoji.url" target="_blank">{{ emoji.url }}</MkLink> + </template> + </MkKeyValue> + </div> + </MkSpacer> + </template> +</MkModalWindow> </template> <script lang="ts" setup> import * as Misskey from 'misskey-js'; import { defineProps, shallowRef } from 'vue'; +import MkLink from '@/components/MkLink.vue'; import { i18n } from '@/i18n.js'; import MkModalWindow from '@/components/MkModalWindow.vue'; import MkKeyValue from '@/components/MkKeyValue.vue'; -import MkLink from './MkLink.vue'; + const props = defineProps<{ emoji: Misskey.entities.EmojiDetailed, }>(); + const emit = defineEmits<{ (ev: 'ok', cropped: Misskey.entities.DriveFile): void; (ev: 'cancel'): void; (ev: 'closed'): void; }>(); + const dialogEl = shallowRef<InstanceType<typeof MkModalWindow>>(); -const cancel = () => { + +function cancel() { emit('cancel'); dialogEl.value!.close(); -}; +} </script> <style lang="scss" module> diff --git a/packages/frontend/src/pages/admin/moderation.vue b/packages/frontend/src/pages/admin/moderation.vue index 9efb34ac9a..a75799696d 100644 --- a/packages/frontend/src/pages/admin/moderation.vue +++ b/packages/frontend/src/pages/admin/moderation.vue @@ -30,6 +30,12 @@ SPDX-License-Identifier: AGPL-3.0-only <template #label>{{ i18n.ts.privacyPolicyUrl }}</template> </MkInput> + <MkInput v-model="inquiryUrl" type="url"> + <template #prefix><i class="ti ti-link"></i></template> + <template #label>{{ i18n.ts._serverSettings.inquiryUrl }}</template> + <template #caption>{{ i18n.ts._serverSettings.inquiryUrlDescription }}</template> + </MkInput> + <MkTextarea v-model="preservedUsernames"> <template #label>{{ i18n.ts.preservedUsernames }}</template> <template #caption>{{ i18n.ts.preservedUsernamesDescription }}</template> @@ -86,6 +92,7 @@ const hiddenTags = ref<string>(''); const preservedUsernames = ref<string>(''); const tosUrl = ref<string | null>(null); const privacyPolicyUrl = ref<string | null>(null); +const inquiryUrl = ref<string | null>(null); async function init() { const meta = await misskeyApi('admin/meta'); @@ -97,6 +104,7 @@ async function init() { preservedUsernames.value = meta.preservedUsernames.join('\n'); tosUrl.value = meta.tosUrl; privacyPolicyUrl.value = meta.privacyPolicyUrl; + inquiryUrl.value = meta.inquiryUrl; } function save() { @@ -105,6 +113,7 @@ function save() { emailRequiredForSignup: emailRequiredForSignup.value, tosUrl: tosUrl.value, privacyPolicyUrl: privacyPolicyUrl.value, + inquiryUrl: inquiryUrl.value, sensitiveWords: sensitiveWords.value.split('\n'), prohibitedWords: prohibitedWords.value.split('\n'), hiddenTags: hiddenTags.value.split('\n'), diff --git a/packages/frontend/src/pages/contact.vue b/packages/frontend/src/pages/contact.vue index 3a694a7132..bcdcf43275 100644 --- a/packages/frontend/src/pages/contact.vue +++ b/packages/frontend/src/pages/contact.vue @@ -7,7 +7,21 @@ SPDX-License-Identifier: AGPL-3.0-only <MkStickyContainer> <template #header><MkPageHeader/></template> <MkSpacer :contentMax="600" :marginMin="20"> - <div>{{ instance.maintainerEmail }}</div> + <div class="_gaps"> + <MkKeyValue> + <template #key>{{ i18n.ts.inquiry }}</template> + <template #value> + <MkLink :url="instance.inquiryUrl" target="_blank">{{ instance.inquiryUrl }}</MkLink> + </template> + </MkKeyValue> + + <MkKeyValue> + <template #key>{{ i18n.ts.email }}</template> + <template #value> + <div>{{ instance.maintainerEmail }}</div> + </template> + </MkKeyValue> + </div> </MkSpacer> </MkStickyContainer> </template> @@ -16,6 +30,8 @@ SPDX-License-Identifier: AGPL-3.0-only import { i18n } from '@/i18n.js'; import { definePageMetadata } from '@/scripts/page-metadata.js'; import { instance } from '@/instance.js'; +import MkKeyValue from '@/components/MkKeyValue.vue'; +import MkLink from '@/components/MkLink.vue'; definePageMetadata(() => ({ title: i18n.ts.inquiry, diff --git a/packages/frontend/src/scripts/collapsed.ts b/packages/frontend/src/scripts/collapsed.ts index 237bd37c7a..4ec88a3c65 100644 --- a/packages/frontend/src/scripts/collapsed.ts +++ b/packages/frontend/src/scripts/collapsed.ts @@ -6,15 +6,16 @@ import * as Misskey from 'misskey-js'; export function shouldCollapsed(note: Misskey.entities.Note, urls: string[]): boolean { - const collapsed = note.cw == null && note.text != null && ( - (note.text.includes('$[x2')) || - (note.text.includes('$[x3')) || - (note.text.includes('$[x4')) || - (note.text.includes('$[scale')) || - (note.text.split('\n').length > 9) || - (note.text.length > 500) || - (note.files.length >= 5) || - (urls.length >= 4) + const collapsed = note.cw == null && ( + note.text != null && ( + (note.text.includes('$[x2')) || + (note.text.includes('$[x3')) || + (note.text.includes('$[x4')) || + (note.text.includes('$[scale')) || + (note.text.split('\n').length > 9) || + (note.text.length > 500) || + (urls.length >= 4) + ) || note.files.length >= 5 ); return collapsed; |