Skip to content

Commit 4eeb364

Browse files
authored
お知らせページを追加 運用はコードを直書き (#553)
# PRの概要 close #298 ## 具体的な変更内容 管理者画面を作ろかと思ったが、管理者画面を作ってメンテナンスするコストを考えると、とりあえず直書き運用でいい気がした #540 ## 影響範囲 ## 動作要件 ## 補足 ## レビューリクエストを出す前にチェック! - [ ] 改めてセルフレビューしたか - [ ] 手動での動作検証を行ったか - [ ] server の機能追加ならば、テストを書いたか - 理由: 書いた | server の機能追加ではない - [ ] 間違った使い方が存在するならば、それのドキュメントをコメントで書いたか - 理由: 書いた | 間違った使い方は存在しない - [ ] わかりやすいPRになっているか <!-- レビューリクエスト後は、Slackでもメンションしてお願いすることを推奨します。 -->
1 parent e24eec3 commit 4eeb364

File tree

2 files changed

+60
-2
lines changed

2 files changed

+60
-2
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import { NavigateByAuthState } from "~/components/common/NavigateByAuthState";
2+
import TopNavigation from "~/components/common/TopNavigation";
3+
4+
// Notification型を定義
5+
type Notification = {
6+
date: string; // お知らせの日付 (例: "2024-12-15")
7+
title: string; // お知らせのタイトル (例: "システムメンテナンスのお知らせ")
8+
content: string; // お知らせの内容 (例: "2024年12月20日午後2時より...")
9+
};
10+
11+
// お知らせリスト
12+
const notifications: Notification[] = [
13+
{
14+
date: "2024-12-28",
15+
title: "CourseMate Ver2.0.0リリースのお知らせ",
16+
content: "検索機能など、新たな機能を実装しました。ぜひご活用ください。",
17+
},
18+
{
19+
date: "2024-10-9",
20+
title: "CourseMate Ver1.0.1リリースのお知らせ",
21+
content: "授業登録モーダルにおいて、授業IDを追加しました。",
22+
},
23+
{
24+
date: "2024-10-1",
25+
title: "CourseMate リリースのお知らせ",
26+
content: "CourseMateがリリースされました!ぜひご活用ください。",
27+
},
28+
];
29+
30+
// 日付の降順(最近の順)で並べ替え
31+
const sortedNotifications = notifications.sort(
32+
(a, b) => new Date(b.date).getTime() - new Date(a.date).getTime(),
33+
);
34+
35+
export default function Notification() {
36+
return (
37+
<NavigateByAuthState type="toLoginForUnauthenticated">
38+
<div className="flex flex-col p-2">
39+
<TopNavigation title="お知らせ" />
40+
41+
<ul className="w-full space-y-6 p-8 text-left">
42+
{sortedNotifications.map((notification) => (
43+
<li key={notification.date} className="border-b pb-4">
44+
<h2 className="font-semibold text-lg">{notification.title}</h2>
45+
<p className="text-gray-500 text-sm">{notification.date}</p>
46+
<p className="mt-2 leading-7">{notification.content}</p>
47+
</li>
48+
))}
49+
</ul>
50+
</div>
51+
</NavigateByAuthState>
52+
);
53+
}

web/app/settings/page.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import Link from "next/link";
22
import LogOutButton from "~/components/LogOutButton";
33
import { NavigateByAuthState } from "~/components/common/NavigateByAuthState";
4-
54
export default function Settings() {
65
return (
76
<NavigateByAuthState type="toLoginForUnauthenticated">
@@ -19,6 +18,12 @@ export default function Settings() {
1918
</Link>
2019
</li>
2120
<hr />
21+
<li>
22+
<Link href="/settings/notification" className="btn cm-li-btn">
23+
運営からのお知らせ
24+
</Link>
25+
</li>
26+
<hr />
2227
<li>
2328
<Link href="/settings/contact" className="btn cm-li-btn">
2429
お問い合わせ
@@ -27,7 +32,7 @@ export default function Settings() {
2732
<hr />
2833
<li>
2934
<Link href="/faq" className="btn cm-li-btn">
30-
よくある質問
35+
よくあるご質問
3136
</Link>
3237
</li>
3338
<hr />

0 commit comments

Comments
 (0)