Skip to content

Commit 477f3ff

Browse files
authored
Merge pull request #62 from ss1119/feature/issue-61
活動内容のページを修正
2 parents 8da99a4 + 958ed66 commit 477f3ff

File tree

11 files changed

+158
-63
lines changed

11 files changed

+158
-63
lines changed

public/header/ja/activities.png

1.54 KB
Loading

src/components/header.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ export default function Header() {
6969
<Image src={t.headerMenu.issues} alt="issues" width={110} height={52} />
7070
</a>
7171
</Link>
72-
<Link href="/topics">
72+
<Link href="/activities">
7373
<a className="hover:opacity-50">
74-
<Image src={t.headerMenu.activities} alt="topics" width={110} height={52} />
74+
<Image src={t.headerMenu.activities} alt="activities" width={110} height={52} />
7575
</a>
7676
</Link>
7777
<Link href="/publications">

src/components/list.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ function List({ items }) {
1313
<div key={item.sys.id} className="grid grid-cols-7 my-4 mx-3 items-center">
1414
<p className="py-1 mx-1 bg-gray-200 text-center">{item.fields.date}</p>
1515
<p className="col-span-6 py-1 mx-2">
16-
<Link as={`/topics/${item.sys.id}`} href="/topics/[item.sys.id]">
16+
<Link as={`/activities/${item.fields.year.toString()}/${item.sys.id}`} href="/activities/[item.fields.year.toString()]/[item.sys.id]">
1717
<a className="text-blue-600 hover:underline">{item.fields.title}</a>
1818
</Link>
1919
</p>

src/components/sidebar.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ import Link from "next/link";
22

33
import markdownStyles from "../styles/markdown-styles.module.css";
44

5-
export default function Sidebar({ items, title }) {
5+
export default function Sidebar({ items, title, type }) {
66
return (
77
<>
88
<h2 className="text-lg font-bold m-2 p-2">{title}</h2>
99
<div className={markdownStyles["markdown"]}>
1010
<ul className="px-2">
1111
{items.map((item) => (
1212
<li key={item.sys.id}>
13-
<Link as={`/publications/${item.fields.year}`} href="/publications/[item.fields.year]">
13+
<Link as={`/${type}/${item.fields.year}`} href={`/${type}/[item.fields.year]`}>
1414
<a className="text-blue-600 hover:underline">{item.fields.title}</a>
1515
</Link>
1616
</li>

src/lib/api.js

+29-12
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,42 @@ const client = createClient({
66
accessToken: NEXT_PUBLIC_CF_DELIVERY_ACCESS_TOKEN,
77
});
88

9-
export async function getAllTopics() {
9+
export async function getAllActivities() {
1010
const res = await client.getEntries({
11-
content_type: "topics",
11+
content_type: "activities",
12+
order: "-fields.year",
13+
});
14+
return res.items;
15+
}
16+
17+
export async function getActivity(year) {
18+
const res = await client.getEntries({
19+
content_type: "activities",
20+
"fields.year": year,
21+
});
22+
return res.items[0];
23+
}
24+
25+
export async function getLatestActivity() {
26+
const res = await client.getEntries({
27+
content_type: "activities",
28+
order: "-fields.year",
29+
});
30+
return res.items[0];
31+
}
32+
33+
export async function getAllActivitiesOthers(year) {
34+
const res = await client.getEntries({
35+
content_type: "activitiesOthers",
36+
"fields.year": year,
1237
order: "-fields.date",
1338
});
1439
return res.items;
1540
}
1641

17-
export async function getTopics(id) {
42+
export async function getActivitiesOthers(id) {
1843
const res = await client.getEntries({
19-
content_type: "topics",
44+
content_type: "activitiesOthers",
2045
"sys.id": id,
2146
});
2247
return res.items[0];
@@ -46,14 +71,6 @@ export async function getLatestPublication() {
4671
return res.items[0];
4772
}
4873

49-
export async function getLatestPublicationYear() {
50-
const res = await client.getEntries({
51-
content_type: "publications",
52-
order: "-fields.year",
53-
});
54-
return res.items[0].fields.year;
55-
}
56-
5774
export async function getEnAllPublications() {
5875
const res = await client.getEntries({
5976
content_type: "publicationsEn",

src/pages/topics/[id].js src/pages/activities/[year]/[id].js

+11-11
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import Head from "next/head";
22
import { useRouter } from "next/dist/client/router";
33

4-
import { getTopics, getAllTopics } from "../../lib/api";
5-
import { J_SITE_TITLE, E_SITE_TITLE } from "../../lib/constants";
6-
import markdownToHtml from "../../lib/markdownToHtml";
7-
import Layout from "../../components/layout";
8-
import Content from "../../components/content";
9-
import PageTitle from "../../components/pageTitle";
4+
import { getAllActivitiesOthers, getActivitiesOthers } from "../../../lib/api";
5+
import { J_SITE_TITLE, E_SITE_TITLE } from "../../../lib/constants";
6+
import markdownToHtml from "../../../lib/markdownToHtml";
7+
import Layout from "../../../components/layout";
8+
import Content from "../../../components/content";
9+
import PageTitle from "../../../components/pageTitle";
1010

11-
export default function Publication({ title, etitle, body }) {
11+
export default function Activity({ title, etitle, body }) {
1212
const { locale } = useRouter();
1313
const site_title = locale === "ja-JP" ? J_SITE_TITLE : E_SITE_TITLE;
1414
const page_title = locale === "ja-JP" ? title : etitle;
@@ -27,15 +27,15 @@ export default function Publication({ title, etitle, body }) {
2727
}
2828

2929
export async function getStaticPaths() {
30-
const items = await getAllTopics();
30+
const items = await getAllActivitiesOthers();
3131
const paths = [];
3232
items.map((item) => {
3333
paths.push({
34-
params: { id: item.sys.id },
34+
params: { year: item.fields.year.toString(), id: item.sys.id },
3535
locale: "ja-JP",
3636
});
3737
paths.push({
38-
params: { id: item.sys.id },
38+
params: { year: item.fields.year.toString(), id: item.sys.id },
3939
locale: "en",
4040
});
4141
});
@@ -44,7 +44,7 @@ export async function getStaticPaths() {
4444
}
4545

4646
export async function getStaticProps({ params }) {
47-
const item = await getTopics(params.id);
47+
const item = await getActivitiesOthers(params.id);
4848
const body = await markdownToHtml(item.fields.body);
4949
return { props: { title: item.fields.title, etitle: item.fields.etitle, body: body } };
5050
}

src/pages/activities/[year]/index.js

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
import Link from "next/link";
2+
import Head from "next/head";
3+
import { useRouter } from "next/dist/client/router";
4+
5+
import { getAllActivities, getActivity, getAllActivitiesOthers } from "../../../lib/api";
6+
import { J_SITE_TITLE, E_SITE_TITLE } from "../../../lib/constants";
7+
import markdownToHtml from "../../../lib/markdownToHtml";
8+
import Layout from "../../../components/layout";
9+
import Content from "../../../components/content";
10+
import List from "../../../components/list";
11+
import PageTitle from "../../../components/pageTitle";
12+
import Sidebar from "../../../components/sidebar";
13+
14+
export default function Activity({ items, others, jtitle, etitle, body }) {
15+
const { locale } = useRouter();
16+
const site_title = locale === "ja-JP" ? J_SITE_TITLE : E_SITE_TITLE;
17+
const page_title = locale === "ja-JP" ? jtitle : etitle;
18+
const sidebar_title = locale === "ja-JP" ? "研究活動" : "Activities";
19+
20+
return (
21+
<Layout>
22+
<Head>
23+
<title>
24+
{page_title} | {site_title}
25+
</title>
26+
</Head>
27+
<PageTitle title={page_title} />
28+
<div className="grid grid-cols-5">
29+
<div className="col-span-4">
30+
<Content body={body} />
31+
<List items={others} />
32+
</div>
33+
<div className="border-l">
34+
<Sidebar items={items} title={sidebar_title} type="activities" />
35+
</div>
36+
</div>
37+
</Layout>
38+
);
39+
}
40+
41+
export async function getStaticPaths({ locales }) {
42+
const items = await getAllActivities();
43+
const paths = [];
44+
items.map((item) => {
45+
paths.push({
46+
params: { year: item.fields.year.toString() },
47+
locale: "ja-JP",
48+
});
49+
paths.push({
50+
params: { year: item.fields.year.toString() },
51+
locale: "en",
52+
});
53+
});
54+
55+
return { paths, fallback: false };
56+
}
57+
58+
export async function getStaticProps({ params }) {
59+
const items = await getAllActivities();
60+
const item = await getActivity(params.year);
61+
const others = await getAllActivitiesOthers(params.year);
62+
const body = await markdownToHtml(item.fields.body);
63+
return { props: { items: items, others: others, jtitle: item.fields.title, etitle: item.fields.etitle, body: body } };
64+
}

src/pages/activities/index.js

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import Head from "next/head";
2+
import { useRouter } from "next/dist/client/router";
3+
4+
import { getLatestActivity, getAllActivities } from "../../lib/api";
5+
import { J_SITE_TITLE, E_SITE_TITLE } from "../../lib/constants";
6+
import markdownToHtml from "../../lib/markdownToHtml";
7+
import Layout from "../../components/layout";
8+
import Content from "../../components/content";
9+
import PageTitle from "../../components/pageTitle";
10+
import Sidebar from "../../components/sidebar";
11+
12+
function Index({ body, jtitle, etitle, items }) {
13+
const { locale } = useRouter();
14+
const site_title = locale === "ja-JP" ? J_SITE_TITLE : E_SITE_TITLE;
15+
const page_title = locale === "ja-JP" ? jtitle : etitle;
16+
const sidebar_title = locale === "ja-JP" ? "研究活動" : "Activities";
17+
18+
return (
19+
<Layout>
20+
<Head>
21+
<title>
22+
{page_title} | {site_title}
23+
</title>
24+
</Head>
25+
<PageTitle title={page_title} />
26+
<div className="grid grid-cols-5">
27+
<div className="col-span-4">
28+
<Content body={body} />
29+
</div>
30+
<div className="border-l">
31+
<Sidebar items={items} title={sidebar_title} type="activities" />
32+
</div>
33+
</div>
34+
</Layout>
35+
);
36+
}
37+
38+
export async function getStaticProps() {
39+
const latestItem = await getLatestActivity();
40+
const body = await markdownToHtml(latestItem.fields.body);
41+
const items = await getAllActivities();
42+
return {
43+
props: { body: body, jtitle: latestItem.fields.title, etitle: latestItem.fields.etitle, items: items },
44+
};
45+
}
46+
47+
export default Index;

src/pages/publications/[year].js

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export default function Publication({ jitems, eitems, jtitle, etitle, jbody, ebo
3030
<Content body={body} />
3131
</div>
3232
<div className="border-l">
33-
<Sidebar items={items} title={sidebar_title} />
33+
<Sidebar items={items} title={sidebar_title} type="publications" />
3434
</div>
3535
</div>
3636
</Layout>

src/pages/publications/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export default function Index({ jbody, ebody, jtitle, etitle, jitems, eitems })
3030
<Content body={body} />
3131
</div>
3232
<div className="border-l">
33-
<Sidebar items={items} title={sidebar_title} />
33+
<Sidebar items={items} title={sidebar_title} type="publications" />
3434
</div>
3535
</div>
3636
</Layout>

src/pages/topics/index.js

-33
This file was deleted.

0 commit comments

Comments
 (0)