enhance(Page): ページを非公開にできるように (MisskeyIO#821)

This commit is contained in:
まっちゃてぃー。 2024-12-11 03:23:16 +09:00 committed by GitHub
parent 6a416468e3
commit 1a81d3fa46
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 75 additions and 16 deletions

View file

@ -16,7 +16,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
<article>
<header>
<h1 :title="page.title">{{ page.title }}</h1>
<h1 :title="page.title">{{ page.title || page.name }} <i v-if="page.visibility === 'private'" class="ti ti-lock"></i></h1>
</header>
<p v-if="page.summary" :title="page.summary">{{ page.summary.length > 85 ? page.summary.slice(0, 85) + '…' : page.summary }}</p>
<footer>

View file

@ -37,6 +37,12 @@ SPDX-License-Identifier: AGPL-3.0-only
<option value="sans-serif">{{ i18n.ts._pages.fontSansSerif }}</option>
</MkSelect>
<MkSelect v-model="visibility">
<template #label>{{ i18n.ts._pages.visibility }}</template>
<option value="public">{{ i18n.ts._pages.public }}</option>
<option value="private">{{ i18n.ts._pages.private }}</option>
</MkSelect>
<MkSwitch v-model="hideTitleWhenPinned">{{ i18n.ts._pages.hideTitleWhenPinned }}</MkSwitch>
<div class="eyeCatch">
@ -96,6 +102,7 @@ const name = ref(Date.now().toString());
const eyeCatchingImage = ref<Misskey.entities.DriveFile | null>(null);
const eyeCatchingImageId = ref<string | null>(null);
const font = ref('sans-serif');
const visibility = ref('public');
const content = ref<Misskey.entities.Page['content']>([]);
const alignCenter = ref(false);
const hideTitleWhenPinned = ref(false);
@ -119,6 +126,7 @@ function getSaveOptions() {
name: name.value.trim(),
summary: summary.value,
font: font.value,
visibility: visibility.value,
script: '',
hideTitleWhenPinned: hideTitleWhenPinned.value,
alignCenter: alignCenter.value,
@ -256,6 +264,7 @@ async function init() {
currentName.value = page.value.name;
summary.value = page.value.summary;
font.value = page.value.font;
visibility.value = page.value.visibility;
hideTitleWhenPinned.value = page.value.hideTitleWhenPinned;
alignCenter.value = page.value.alignCenter;
content.value = page.value.content;
@ -286,8 +295,8 @@ const headerTabs = computed(() => [{
definePageMetadata(() => ({
title: props.initPageId ? i18n.ts._pages.editPage
: props.initPageName && props.initUser ? i18n.ts._pages.readPage
: i18n.ts._pages.newPage,
: props.initPageName && props.initUser ? i18n.ts._pages.readPage
: i18n.ts._pages.newPage,
icon: 'ti ti-pencil',
}));
</script>

View file

@ -41,7 +41,7 @@ SPDX-License-Identifier: AGPL-3.0-only
/>
</div>
<div :class="$style.pageBannerTitle" class="_gaps_s">
<h1>{{ page.title || page.name }}</h1>
<h1>{{ page.title || page.name }} <i v-if="page.visibility === 'private'" class="ti ti-lock"></i></h1>
<div :class="$style.pageBannerTitleSub">
<div v-if="page.user" :class="$style.pageBannerTitleUser">
<MkAvatar :user="page.user" :class="$style.avatar" indicator link preview/> <MkA :to="`/@${username}`"><MkUserName :user="page.user" :nowrap="false"/></MkA>
@ -80,7 +80,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
<div :class="$style.pageLinks">
<MkA v-if="!$i || $i.id !== page.userId" :to="`/@${username}/pages/${pageName}/view-source`" class="link">{{ i18n.ts._pages.viewSource }}</MkA>
<template v-if="$i && $i.id === page.userId">
<template v-if="($i && $i.id === page.userId) && page.visibility === 'public'">
<MkA :to="`/pages/edit/${page.id}`" class="link">{{ i18n.ts._pages.editThisPage }}</MkA>
<button v-if="$i.pinnedPageId === page.id" class="link _textButton" @click="pin(false)">{{ i18n.ts.unpin }}</button>
<button v-else class="link _textButton" @click="pin(true)">{{ i18n.ts.pin }}</button>