From 3b33ffa05d89bcac0b0ea1638bdc90f31e0f4359 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cyril=20=C5=A0ebek?= Date: Mon, 17 Jun 2024 11:58:32 +0200 Subject: [PATCH] Finished section for music - Finished listing of musical compositions - Slight update to listing of blog posts - Updating api.js - Fixed dark/light mode in some pages (font color) --- README.md | 3 +- image.png | Bin 0 -> 46517 bytes public/music/first/my.flac | 0 public/music/first/my.mp3 | 0 public/music/first/my.pdf | 0 src/components/CompositionsList.astro | 14 +++ src/components/SingleCompositionCard.astro | 39 +++++++ src/content/config.js | 26 +++++ src/content/music/first.md | 15 +++ src/content/music/second.md | 15 +++ src/i18n/en.js | 19 ++++ src/pages/[lang]/about/index.astro | 16 --- src/pages/[lang]/blog/[...slug].astro | 4 +- src/pages/[lang]/blog/index.astro | 19 ++-- src/pages/[lang]/contact/index.astro | 16 --- src/pages/[lang]/index.astro | 2 + src/pages/[lang]/music/index.astro | 28 ++++- src/pages/api.js | 118 ++++++++++----------- 18 files changed, 227 insertions(+), 107 deletions(-) create mode 100644 image.png create mode 100644 public/music/first/my.flac create mode 100644 public/music/first/my.mp3 create mode 100644 public/music/first/my.pdf create mode 100644 src/components/CompositionsList.astro create mode 100644 src/components/SingleCompositionCard.astro create mode 100644 src/content/music/first.md create mode 100644 src/content/music/second.md delete mode 100644 src/pages/[lang]/about/index.astro delete mode 100644 src/pages/[lang]/contact/index.astro diff --git a/README.md b/README.md index d9e1554..bbe5269 100644 --- a/README.md +++ b/README.md @@ -38,5 +38,4 @@ All commands are run from the root of the project, from a terminal: | `npm run build` | Build your production site to `./dist/` | | `npm run preview` | Preview your build locally, before deploying | | `npm run astro ...` | Run CLI commands like `astro add`, `astro check` | -| `npm run astro -- --help` | Get help using the Astro CLI | - +| `npm run astro -- --help` | Get help using the Astro CLI | \ No newline at end of file diff --git a/image.png b/image.png new file mode 100644 index 0000000000000000000000000000000000000000..c482a7b751625ed0c171e76683cb4ff31ee7e314 GIT binary patch literal 46517 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

3j5AGM6c*5}1)? zCo)|N0{sL4%02sg81PE_tEhgN zi}W|50OQDI^%7{8YBC^uEMix6`*W?7jK^xxlHMD&HA9D33F>#x?6ulq*(ryN=G&BO zJElJ0M!!5wLKH3ito0)pHa7Xb(Ej{K*Psbk(y$!3msYk!#((@^E_1}fnS<3;a1{-b z6sA@XvNV|)KxS&gCO?>D+RZ6J>!}TOzZrVpe&re8Vf&u9GYtYq8-Pc_ev9P=+h!LX zs68H1?;z*bIR3KV6nb?b5}KLh_vB^T4?Ca0c#2@}s)`$%{4J0mmhygi%0A7^(mGKW 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�hDoVCU~ufYionBg)CjZo@njWgCY>3w4P@9 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 literal 0 HcmV?d00001 diff --git a/public/music/first/my.flac b/public/music/first/my.flac new file mode 100644 index 0000000..e69de29 diff --git a/public/music/first/my.mp3 b/public/music/first/my.mp3 new file mode 100644 index 0000000..e69de29 diff --git a/public/music/first/my.pdf b/public/music/first/my.pdf new file mode 100644 index 0000000..e69de29 diff --git a/src/components/CompositionsList.astro b/src/components/CompositionsList.astro new file mode 100644 index 0000000..44456f7 --- /dev/null +++ b/src/components/CompositionsList.astro @@ -0,0 +1,14 @@ +--- +import SingleCompositionCard from "./SingleCompositionCard.astro"; +import { Separator } from "./ui/separator"; + +const { songs } = Astro.props +--- +{ + songs.map((song, index) => ( + <> + + {index == songs.length-1 ? <> : } + + )) +} \ No newline at end of file diff --git a/src/components/SingleCompositionCard.astro b/src/components/SingleCompositionCard.astro new file mode 100644 index 0000000..7ed3bf0 --- /dev/null +++ b/src/components/SingleCompositionCard.astro @@ -0,0 +1,39 @@ +--- +import { + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from "../components/ui/card"; +import { Separator } from "../components/ui/separator"; +import { Image } from "astro:assets"; + +import { getLangFromUrl, useTranslations } from "../i18n/utils"; +const t = useTranslations(getLangFromUrl(Astro.url)); + +const { song } = Astro.props; +--- + + + {song.data.image.alt} + + {song.data.name} + +
+ {song.data.comment[Astro.currentLocale]} +
+
+ + {t("music")["downloadPDF"]} + + {t("music")["downloadMP3"]} + + {t("music")["downloadFLAC"]} + +
\ No newline at end of file diff --git a/src/content/config.js b/src/content/config.js index 8727003..a3662d3 100644 --- a/src/content/config.js +++ b/src/content/config.js @@ -16,10 +16,32 @@ const blogCollection = defineCollection({ tags: z.array(z.string()).optional() }) }); + + const musicCollection = defineCollection({ + type: "content", + schema: z.object({ + name: z.string(), + comment: z.object({ + en: z.string(), + de: z.string(), + cs: z.string(), + fr: z.string() + }), + publishDate: z.date(), + image: z.object({ + url: z.string(), + alt: z.string() + }), + pdfLink: z.string().optional(), + flacLink: z.string().optional(), + mp3Link: z.string() + }) + }); // 3. Export a single `collections` object to register your collection(s) // This key should match your collection directory name in "src/content" export const collections = { 'blog': blogCollection, + 'music': musicCollection }; export async function getBlogPosts() { @@ -32,4 +54,8 @@ export async function getBlogPosts() { blog_slug } }) +} + +export async function getCompositions() { + return await getCollection('music'); } \ No newline at end of file diff --git a/src/content/music/first.md b/src/content/music/first.md new file mode 100644 index 0000000..9a3f564 --- /dev/null +++ b/src/content/music/first.md @@ -0,0 +1,15 @@ +--- +name: "C1" +publishDate: 2020-01-01T00:00:00Z +pdfLink: "/public/music/first/my.pdf" +mp3Link: "/public/music/first/my.mp3" +flacLink: "/public/music/first/my.flac" +image: + url: "https://images.unsplash.com/photo-1664380619395-a25d867b5fb9?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&q=80&w=1080" + alt: "Text" +comment: + en: "comment EN1" + cs: "comment CS1" + de: "comment DE1" + fr: "comment FR1" +--- \ No newline at end of file diff --git a/src/content/music/second.md b/src/content/music/second.md new file mode 100644 index 0000000..9157783 --- /dev/null +++ b/src/content/music/second.md @@ -0,0 +1,15 @@ +--- +name: "C2" +publishDate: 2020-01-01T00:00:00Z +pdfLink: "/public/music/first/my.pdf" +mp3Link: "/public/music/first/my.mp3" +flacLink: "/public/music/first/my.flac" +image: + url: "https://images.unsplash.com/photo-1664380619395-a25d867b5fb9?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&q=80&w=1080" + alt: "Text" +comment: + en: "comment EN2" + cs: "comment CS2" + de: "comment DE2" + fr: "comment FR2" +--- \ No newline at end of file diff --git a/src/i18n/en.js b/src/i18n/en.js index 93dbcea..78ac528 100644 --- a/src/i18n/en.js +++ b/src/i18n/en.js @@ -104,5 +104,24 @@ export const en = { }, ], + /* + Blog page + */ + blog: { + title: "Blog lorem", + description: "Bloog description here", + }, + + /* + Page with musical compositions + */ + music: { + title: "lorem ipsum dolor sit amer cons", + description: "longegengegeg eg eg e geg eg eg eg eg eg eg eg eg eg e ge ge eg eg eg eg egge eg eg eg eg eg e eg ge g g ee geg eg eg e geg eg eg eg eg eg eg eg g e", + downloadPDF: "Download PDF", + downloadMP3: "Download MP3", + downloadFLAC: "Download FLAC" + }, + postsTagged: "All posts tagged with", }; diff --git a/src/pages/[lang]/about/index.astro b/src/pages/[lang]/about/index.astro deleted file mode 100644 index dcb150a..0000000 --- a/src/pages/[lang]/about/index.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- -import MainLayout from "../../../layouts/MainLayout.astro"; - -//@ts-ignore -import { dictionary } from "../../../i18n/dictionary"; -const { title, description } = dictionary[Astro.currentLocale]; - -export async function getStaticPaths() { - return ["en", "fr", "cs", "de"].map((lang) => { - return { params: { lang } }; - }); -} ---- - - - \ No newline at end of file diff --git a/src/pages/[lang]/blog/[...slug].astro b/src/pages/[lang]/blog/[...slug].astro index 8a1209f..c409b55 100644 --- a/src/pages/[lang]/blog/[...slug].astro +++ b/src/pages/[lang]/blog/[...slug].astro @@ -1,4 +1,6 @@ --- +export const prerender = true + import { getBlogPosts } from "../../../content/config"; import BlogPost from "../../../layouts/BlogPost.astro"; @@ -19,7 +21,7 @@ export async function getStaticPaths() { const { lang } = Astro.params; const page = Astro.props; // @ts-ignore -const formattedDate = page.data.publishDate.toLocaleString(lang); +const formattedDate = page.data.publishDate?.toLocaleString(lang); const { Content } = await page.render(); --- diff --git a/src/pages/[lang]/blog/index.astro b/src/pages/[lang]/blog/index.astro index 803d8fe..b4d1e11 100644 --- a/src/pages/[lang]/blog/index.astro +++ b/src/pages/[lang]/blog/index.astro @@ -1,13 +1,14 @@ --- +export const prerender = true; + import MainLayout from "../../../layouts/MainLayout.astro"; import { getBlogPosts } from "../../../content/config"; -//@ts-ignore -import { dictionary } from "../../../i18n/dictionary"; import SinglePageBlogMode from "../../../layouts/SinglePageBlogMode.astro"; import PostsList from "../../../components/PostsList.astro"; +import { getLangFromUrl, useTranslations } from "../../../i18n/utils"; +import { Separator } from "../../../components/ui/separator"; -const { title, description } = dictionary[Astro.currentLocale]; - +const t = useTranslations(getLangFromUrl(Astro.url)) export async function getStaticPaths() { return ["en", "fr", "cs", "de"].map((lang) => { @@ -21,9 +22,13 @@ var filtered_posts = posts.filter( --- - + - +

+

{t("blog")["title"]}

+

{t("blog")["description"]}

+ +
- + \ No newline at end of file diff --git a/src/pages/[lang]/contact/index.astro b/src/pages/[lang]/contact/index.astro deleted file mode 100644 index dcb150a..0000000 --- a/src/pages/[lang]/contact/index.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- -import MainLayout from "../../../layouts/MainLayout.astro"; - -//@ts-ignore -import { dictionary } from "../../../i18n/dictionary"; -const { title, description } = dictionary[Astro.currentLocale]; - -export async function getStaticPaths() { - return ["en", "fr", "cs", "de"].map((lang) => { - return { params: { lang } }; - }); -} ---- - - - \ No newline at end of file diff --git a/src/pages/[lang]/index.astro b/src/pages/[lang]/index.astro index b4324e8..621eba7 100644 --- a/src/pages/[lang]/index.astro +++ b/src/pages/[lang]/index.astro @@ -1,4 +1,6 @@ --- +export const prerender = true + import MainLayout from "../../layouts/MainLayout.astro"; import Hero from "../../components/Hero.astro"; import About from "../../components/About.astro"; diff --git a/src/pages/[lang]/music/index.astro b/src/pages/[lang]/music/index.astro index 488baf3..341d642 100644 --- a/src/pages/[lang]/music/index.astro +++ b/src/pages/[lang]/music/index.astro @@ -1,8 +1,15 @@ --- +export const prerender = true; + import MainLayout from "../../../layouts/MainLayout.astro"; //@ts-ignore import { getLangFromUrl, useTranslations } from "../../../i18n/utils"; +import { Separator } from "../../../components/ui/separator"; + +import SinglePageBlogMode from "../../../layouts/SinglePageBlogMode.astro"; +import { getCompositions } from "../../../content/config"; +import CompositionsList from "../../../components/CompositionsList.astro"; const t = useTranslations(getLangFromUrl(Astro.url)); @@ -11,7 +18,22 @@ export async function getStaticPaths() { return { params: { lang } }; }); } + +const songs = await getCompositions() --- - - - \ No newline at end of file + + + +
+

{t("music")["title"]}

+

{t("music")["description"]}

+ + +
+
+
diff --git a/src/pages/api.js b/src/pages/api.js index c5ed752..19121e2 100644 --- a/src/pages/api.js +++ b/src/pages/api.js @@ -1,70 +1,64 @@ import nodemailer from "nodemailer"; -import { createId } from '@paralleldrive/cuid2'; +import { createId } from "@paralleldrive/cuid2"; import { InfisicalClient } from "@infisical/sdk"; const client = new InfisicalClient({ - siteUrl: import.meta.env.INFISICAL_URL, - auth: { - universalAuth: { - clientId: import.meta.env.INFISICAL_CLIENTID, - clientSecret: import.meta.env.INFISICAL_SECRET - } - } + siteUrl: import.meta.env.INFISICAL_URL, + auth: { + universalAuth: { + clientId: import.meta.env.INFISICAL_CLIENTID, + clientSecret: import.meta.env.INFISICAL_SECRET, + }, + }, }); export const POST = async ({ request }) => { - try { - var secrets = await client.listSecrets({ - environment: "dev", - projectId: import.meta.env.INFISICAL_PROJECTID, - path: "/email", - includeImports: false - }); - secrets = Object.fromEntries(secrets.map(item => [item.secretKey, item.secretValue])); - - const thisCuid = createId(); - const data = await request.formData(); - var message = { - from: `${data.get("username")} <${secrets["EMAIL"]}>`, - to: `Site Admin <${secrets["RECEIVER"]}>`, - subject: `${secrets["EMAIL_HEAD"]} | ${thisCuid}`, - text: `---\n${data.get("username")}\n${data.get("email")}\n---\n${data.get("message")}`, - html: `

---
${data.get("username")}
${data.get("email")}
---
${data.get("message")}

`, - envelope: { - from: `${data.get("username")} <${secrets["EMAIL"]}>`, - to: `Site Admin <${secrets["RECEIVER"]}>`, - } - } - var transport = nodemailer.createTransport({ - host: secrets["SMTP_SERVER"], - port: secrets["SMTP_PORT"], - secure: secrets["SMTP_SECURITY"], - auth: { - user: secrets["EMAIL"], - pass: secrets["PASSWORD"] - } - }); + try { + var secrets = await client.listSecrets({ + environment: "dev", + projectId: import.meta.env.INFISICAL_PROJECTID, + path: "/email", + includeImports: false, + }); + secrets = Object.fromEntries( + secrets.map((item) => [item.secretKey, item.secretValue]) + ); + const thisCuid = createId(); + const data = await request.formData(); + var message = { + from: `${data.get("username")} <${secrets["EMAIL"]}>`, + to: `Site Admin <${secrets["RECEIVER"]}>`, + subject: `${secrets["EMAIL_HEAD"]} | ${thisCuid}`, + text: `---\n${data.get("username")}\n${data.get( + "email" + )}\n---\n${data.get("message")}`, + html: `

---
${data.get("username")}
${data.get( + "email" + )}
---
${data.get("message")}

`, + envelope: { + from: `${data.get("username")} <${secrets["EMAIL"]}>`, + to: `Site Admin <${secrets["RECEIVER"]}>`, + }, + }; + var transport = nodemailer.createTransport({ + host: secrets["SMTP_SERVER"], + port: secrets["SMTP_PORT"], + secure: secrets["SMTP_SECURITY"], + auth: { + user: secrets["EMAIL"], + pass: secrets["PASSWORD"], + }, + }); - var mailResponse = await transport.sendMail(message); - console.log(mailResponse) - return new Response(JSON.stringify({ message: "Success!" }), { status: 200 }); - - } catch (error) { - console.error("Error parsing form data:", error); - return new Response(JSON.stringify({ message: "Failed to parse form data" }), { status: 400 }); - } -}; - - -/* -npm install --save @types/nodemailer -npm install --save @types/nodemailer -npm install --save @types/nodemailer -npm install --save @types/nodemailer - -další řádka - -volná řádka -další řádka -asdasdasdasdasdad dlouhá řádka asdasdasda žádný enter tady asdsadadsas -*/ \ No newline at end of file + var mailResponse = await transport.sendMail(message); + return new Response(JSON.stringify({ message: "Success!" }), { + status: 200, + }); + } catch (error) { + console.error("Error parsing form data:", error); + return new Response( + JSON.stringify({ message: "Failed to parse form data" }), + { status: 400 } + ); + } +}; \ No newline at end of file