From de3ddb5b4403d02b8cb7671b9cf26e87ce9a2d17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Tue, 30 Jul 2024 13:02:03 +0900 Subject: [PATCH] =?UTF-8?q?enhance:=20=E7=AE=A1=E7=90=86=E7=94=BB=E9=9D=A2?= =?UTF-8?q?=E3=81=A7=E3=82=A2=E3=83=BC=E3=82=AB=E3=82=A4=E3=83=96=E3=81=AB?= =?UTF-8?q?=E3=81=97=E3=81=9F=E3=81=8A=E7=9F=A5=E3=82=89=E3=81=9B=E3=82=92?= =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=83=BB=E7=B7=A8=E9=9B=86=E3=81=A7=E3=81=8D?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=20(#14286)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * enhance: 管理画面でアーカイブにしたお知らせを表示できるように * Update Changelog --- CHANGELOG.md | 1 + locales/index.d.ts | 8 + locales/ja-JP.yml | 2 + .../api/endpoints/admin/announcements/list.ts | 9 +- .../frontend/src/pages/admin/_header_.vue | 5 +- .../src/pages/admin/announcements.vue | 160 +++++++++++------- packages/misskey-js/src/autogen/types.ts | 5 + 7 files changed, 127 insertions(+), 63 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17c233e358..8da94f3749 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ - Feat: ユーザーのアイコン/バナーの変更可否をロールで設定可能に - 変更不可となっていても、設定済みのものを解除してデフォルト画像に戻すことは出来ます - Feat: ユーザ作成時にSystemWebhookを送信可能に #14281 +- Enhance: 管理画面でアーカイブにしたお知らせを表示・編集できるように - Fix: 配信停止したインスタンス一覧が見れなくなる問題を修正 - Fix: Dockerコンテナの立ち上げ時に`pnpm`のインストールで固まることがある問題 - Fix: デフォルトテーマに無効なテーマコードを入力するとUIが使用できなくなる問題を修正 diff --git a/locales/index.d.ts b/locales/index.d.ts index 2b340ecbb5..d54b752312 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -4440,6 +4440,14 @@ export interface Locale extends ILocale { * アーカイブ */ "archive": string; + /** + * アーカイブ済み + */ + "archived": string; + /** + * アーカイブ解除 + */ + "unarchive": string; /** * {name}をアーカイブしますか? */ diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index f0f849fb38..d8531070fe 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1106,6 +1106,8 @@ preservedUsernames: "予約ユーザー名" preservedUsernamesDescription: "予約するユーザー名を改行で列挙します。ここで指定されたユーザー名はアカウント作成時に使えなくなりますが、管理者によるアカウント作成時はこの制限を受けません。また、既に存在するアカウントも影響を受けません。" createNoteFromTheFile: "このファイルからノートを作成" archive: "アーカイブ" +archived: "アーカイブ済み" +unarchive: "アーカイブ解除" channelArchiveConfirmTitle: "{name}をアーカイブしますか?" channelArchiveConfirmDescription: "アーカイブすると、チャンネル一覧や検索結果に表示されなくなり、新たな書き込みもできなくなります。" thisChannelArchived: "このチャンネルはアーカイブされています。" diff --git a/packages/backend/src/server/api/endpoints/admin/announcements/list.ts b/packages/backend/src/server/api/endpoints/admin/announcements/list.ts index 87eaad31a3..7596bf44e3 100644 --- a/packages/backend/src/server/api/endpoints/admin/announcements/list.ts +++ b/packages/backend/src/server/api/endpoints/admin/announcements/list.ts @@ -69,6 +69,7 @@ export const paramDef = { sinceId: { type: 'string', format: 'misskey:id' }, untilId: { type: 'string', format: 'misskey:id' }, userId: { type: 'string', format: 'misskey:id', nullable: true }, + status: { type: 'string', enum: ['all', 'active', 'archived'], default: 'active' }, }, required: [], } as const; @@ -87,7 +88,13 @@ export default class extends Endpoint { // eslint- ) { super(meta, paramDef, async (ps, me) => { const query = this.queryService.makePaginationQuery(this.announcementsRepository.createQueryBuilder('announcement'), ps.sinceId, ps.untilId); - query.andWhere('announcement.isActive = true'); + + if (ps.status === 'archived') { + query.andWhere('announcement.isActive = false'); + } else if (ps.status === 'active') { + query.andWhere('announcement.isActive = true'); + } + if (ps.userId) { query.andWhere('announcement.userId = :userId', { userId: ps.userId }); } else { diff --git a/packages/frontend/src/pages/admin/_header_.vue b/packages/frontend/src/pages/admin/_header_.vue index c5a9609e6e..b88f078598 100644 --- a/packages/frontend/src/pages/admin/_header_.vue +++ b/packages/frontend/src/pages/admin/_header_.vue @@ -24,8 +24,8 @@ SPDX-License-Identifier: AGPL-3.0-only
@@ -56,6 +56,7 @@ const props = defineProps<{ text: string; icon: string; asFullButton?: boolean; + disabled?: boolean; handler: (ev: MouseEvent) => void; }[]; thin?: boolean; diff --git a/packages/frontend/src/pages/admin/announcements.vue b/packages/frontend/src/pages/admin/announcements.vue index e7fb62ec1d..b9e09c8d03 100644 --- a/packages/frontend/src/pages/admin/announcements.vue +++ b/packages/frontend/src/pages/admin/announcements.vue @@ -11,70 +11,83 @@ SPDX-License-Identifier: AGPL-3.0-only {{ i18n.ts._announcement.shouldNotBeUsedToPresentPermanentInfo }} {{ i18n.ts._announcement.tooManyActiveAnnouncementDescription }} - - - - + + + + + -
- - - - - - - - - - - - - - - - - - - - - - - {{ i18n.ts._announcement.dialogAnnouncementUxWarn }} - - {{ i18n.ts._announcement.forExistingUsers }} - - - {{ i18n.ts._announcement.silence }} - - - {{ i18n.ts._announcement.needConfirmationToRead }} - -

{{ i18n.tsx.nUsersRead({ n: announcement.reads }) }}

-
- {{ i18n.ts.save }} - {{ i18n.ts._announcement.end }} ({{ i18n.ts.archive }}) - {{ i18n.ts.delete }} + + +