diff options
author | metamuffin <metamuffin@disroot.org> | 2023-01-09 21:03:50 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-01-09 21:03:50 +0100 |
commit | 1599b61d22810e250f471b3b561660205297e07c (patch) | |
tree | 74df4a9c5a5780e8f5203af4414e29b388cbea12 /src/frontend/pages | |
download | jellything-1599b61d22810e250f471b3b561660205297e07c.tar jellything-1599b61d22810e250f471b3b561660205297e07c.tar.bz2 jellything-1599b61d22810e250f471b3b561660205297e07c.tar.zst |
thing
Diffstat (limited to 'src/frontend/pages')
-rw-r--r-- | src/frontend/pages/home.rs | 12 | ||||
-rw-r--r-- | src/frontend/pages/layout.rs | 20 | ||||
-rw-r--r-- | src/frontend/pages/mod.rs | 19 |
3 files changed, 51 insertions, 0 deletions
diff --git a/src/frontend/pages/home.rs b/src/frontend/pages/home.rs new file mode 100644 index 0000000..b7f1a12 --- /dev/null +++ b/src/frontend/pages/home.rs @@ -0,0 +1,12 @@ +use crate::frontend::pages::{layout::Layout, HtmlTemplate}; +use actix_web::{get, Responder}; + +#[get("/")] +async fn page_home() -> impl Responder { + HtmlTemplate(Layout { + title: "Home - Jellything", + main: markup::new! { + h1 { "It works!" } + }, + }) +} diff --git a/src/frontend/pages/layout.rs b/src/frontend/pages/layout.rs new file mode 100644 index 0000000..283721b --- /dev/null +++ b/src/frontend/pages/layout.rs @@ -0,0 +1,20 @@ +use markup::Render; + +markup::define! { + Layout<'a, Main: Render>(title: &'a str, main: Main) { + @markup::doctype() + html { + head { + title { @title } + link[rel="stylesheet", href="/assets/style.css"]; + } + body { + header { "Grain" } + #main { + @main + } + footer { span { "jellything" } } + } + } + } +} diff --git a/src/frontend/pages/mod.rs b/src/frontend/pages/mod.rs new file mode 100644 index 0000000..08e0e77 --- /dev/null +++ b/src/frontend/pages/mod.rs @@ -0,0 +1,19 @@ +use actix_web::{body::BoxBody, http::StatusCode, HttpResponseBuilder, Responder}; + +pub mod home; +pub mod layout; + +struct HtmlTemplate<T>(pub T); + +impl<T: markup::Render> Responder for HtmlTemplate<T> { + type Body = BoxBody; + + fn respond_to(self, req: &actix_web::HttpRequest) -> actix_web::HttpResponse<Self::Body> { + let mut out = String::new(); + self.0.render(&mut out).unwrap(); + + HttpResponseBuilder::new(StatusCode::OK) + .body(out) + .respond_to(req) + } +} |