diff options
Diffstat (limited to 'src/layout.rs')
-rw-r--r-- | src/layout.rs | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/src/layout.rs b/src/layout.rs deleted file mode 100644 index 637e2fc..0000000 --- a/src/layout.rs +++ /dev/null @@ -1,104 +0,0 @@ -/* -This file is part of metamuffins website (https://codeberg.org/metamuffin/website) -which is licensed under the GNU Affero General Public License (version 3); see /COPYING. -Copyright (C) 2023 metamuffin <metamuffin.org> -*/ - -use crate::blog::rocket_uri_macro_r_blog; -use crate::pages::{ - rocket_uri_macro_r_about, rocket_uri_macro_r_contact, rocket_uri_macro_r_pgp_key, - rocket_uri_macro_r_stuff, -}; -use crate::projects::rocket_uri_macro_r_projects; -use crate::source::rocket_uri_macro_r_source; -use crate::uri; -use markup::{raw, Render}; -use rocket::{ - http::ContentType, - response::{self, Responder}, - Request, Response, -}; -use std::io::Cursor; - -markup::define! { - ScaffoldImpl<Main: Render>( - title: String, - main: Main, - noimg: bool, - ) { - @markup::doctype() - html[lang="en"] { - head { - title { @title " - " "metamuffin's website" } - meta[name="viewport", content="width=device-width, initial-scale=1.0"]; - meta[name="description", content="metamuffin's personal website"]; // TODO - link[rel="stylesheet", href="/style.css"]; - } - body { - @if !noimg { img[ - src="https://s.metamuffin.org/avatar/default-512.webp", - alt="a muffin with purple glowing regions where a 3d vornoi function using chebychev distance exceeds some threshold", - align="left", - height=80, - width=80, - hspace=10, - ]; } - h1 { "metamuffin's personal website" } - nav { - a[href=uri!(r_about())] { "About" } " " - a[href=uri!(r_blog())] { "Blog" } " " - a[href=uri!(r_projects())] { "Projects" } " " - a[href=uri!(r_contact())] { "Contact" } " " - a[href=uri!(r_stuff())] { "Stuff" } " " - a[href="https://codeberg.org/metamuffin"] { "Codeberg" } " " - a[href=uri!(r_pgp_key())] { "PGP-Key" } " " - } - hr; - article { @main } - hr; - footer { - p { - "metamuffin's website; version " @include_str!("../.git/refs/heads/main")[0..10] "; " - "sources available on " a[href=uri!(r_source())] { "this page itself" } - " and on " a[href="https://codeberg.org/metamuffin/metamuffin-website"] { "codeberg" } - } - } - hr; - @if !noimg { - details.ad { summary { "Advertisement by a first-party" } - iframe[loading="lazy", src="https://adservices.metamuffin.org/v1/embed?s=metamuffin.org", style="width:728px;height:90px;border:none;"] {} - } - details.ad { summary { "Advertisement by a third-party" } - iframe[loading="lazy", src="https://john.citrons.xyz/embed?ref=metamuffin.org", style="width:732px;height:94px;border:none;"] {} - } - script { @raw("document.querySelectorAll(\".ad\").forEach(e=>e.open=true) // evil js enables ads hehe") } - } - } - } - } -} - -pub type DynScaffold<'a> = Scaffold<markup::DynRender<'a>>; - -pub struct Scaffold<T> { - pub title: String, - pub content: T, -} - -impl<'r, Main: Render> Responder<'r, 'static> for Scaffold<Main> { - fn respond_to(self, _req: &'r Request<'_>) -> response::Result<'static> { - let mut out = String::new(); - ScaffoldImpl { - main: self.content, - noimg: self.title == "Source", - title: self.title, - } - .render(&mut out) - .unwrap(); - - Response::build() - .header(ContentType::HTML) - .streamed_body(Cursor::new(out)) - .ok() - } -} |