aboutsummaryrefslogtreecommitdiff
path: root/src/tmpl
diff options
context:
space:
mode:
authorXe Iaso <me@christine.website>2022-06-08 14:58:29 -0400
committerXe Iaso <me@christine.website>2022-06-08 15:02:52 -0400
commitdc3f6471e774eaafab92dfcd73dd089707646469 (patch)
tree3b69a8d6f1f05b6c59086f14ae0cbef9ae248a24 /src/tmpl
parent396150f72bcd4545864d96f50afbf39cb6c15afb (diff)
downloadxesite-dc3f6471e774eaafab92dfcd73dd089707646469.tar.xz
xesite-dc3f6471e774eaafab92dfcd73dd089707646469.zip
Add hero image support with <xeblog-hero>
Also lightens the JavaScript load and shifts ad impressions to only when people from Reddit and Hacker News visit. I may have this include Twitter in the future. Signed-off-by: Xe <me@christine.website>
Diffstat (limited to 'src/tmpl')
-rw-r--r--src/tmpl/mod.rs38
-rw-r--r--src/tmpl/nag.rs66
2 files changed, 104 insertions, 0 deletions
diff --git a/src/tmpl/mod.rs b/src/tmpl/mod.rs
new file mode 100644
index 0000000..29d75f6
--- /dev/null
+++ b/src/tmpl/mod.rs
@@ -0,0 +1,38 @@
+use maud::{html, Markup};
+
+pub mod nag;
+
+pub fn xeblog_hero(file: String, prompt: Option<String>) -> Markup {
+ html! {
+ figure.hero style="margin:0" {
+ picture style="margin:0" {
+ source type="image/avif" srcset={"https://cdn.xeiaso.net/file/christine-static/hero/" (file) ".avif"};
+ source type="image/webp" srcset={"https://cdn.xeiaso.net/file/christine-static/hero/" (file) ".webp"};
+ img style="padding:0" alt={"hero image " (file)} src={"https://cdn.xeiaso.net/file/christine-static/hero/" (file) "-smol.png"};
+ }
+ figcaption { "Image generated by MidJourney" @if let Some(prompt) = prompt { " -- " (prompt) } }
+ }
+ }
+}
+
+pub fn xeblog_conv(name: String, mood: String, body: Markup) -> Markup {
+ let name_lower = name.clone().to_lowercase();
+
+ html! {
+ .conversation {
+ ."conversation-picture"."conversation-smol" {
+ picture {
+ source type="image/avif" srcset={"https://cdn.xeiaso.net/file/christine-static/stickers/" (name_lower) "/" (mood) ".avif"};
+ source type="image/webp" srcset={"https://cdn.xeiaso.net/file/christine-static/stickers/" (name_lower) "/" (mood) ".webp"};
+ img alt={(name) " is " (mood)} src={"https://cdn.xeiaso.net/file/christine-static/stickers/" (name_lower) "/" (mood) ".png"};
+ }
+ }
+ ."conversation-chat" {
+ "<"
+ b { (name) }
+ "> "
+ (body)
+ }
+ }
+ }
+}
diff --git a/src/tmpl/nag.rs b/src/tmpl/nag.rs
new file mode 100644
index 0000000..a41447b
--- /dev/null
+++ b/src/tmpl/nag.rs
@@ -0,0 +1,66 @@
+use super::xeblog_conv;
+use crate::post::Post;
+use chrono::prelude::*;
+use lazy_static::lazy_static;
+use maud::{html, Markup};
+use regex::Regex;
+
+lazy_static! {
+ static ref HN: Regex = Regex::new(r#"^https?://news.ycombinator.com"#).unwrap();
+ static ref REDDIT: Regex = Regex::new(r#"^https?://((.+).)?reddit.com"#).unwrap();
+}
+
+pub fn referer(referer: Option<String>) -> Markup {
+ if referer.is_none() {
+ return html! {};
+ }
+
+ let referer = referer.unwrap();
+
+ let nag = html! {
+ script r#async src="https://media.ethicalads.io/media/client/ethicalads.min.js" { "" }
+ div.adaptive data-ea-publisher="christinewebsite" data-ea-type="image" data-ea-style="stickybox" {
+ .warning {
+ (xeblog_conv(
+ "Cadey".into(),
+ "coffee".into(),
+ html! {
+ "Hello! Thank you for visiting my website. You seem to be visiting from a news aggregator and have ads disabled. These ads help pay for running the website and are done by "
+ a href="https://www.ethicalads.io/" { "Ethical Ads" }
+ ". I do not receive detailed analytics on the ads and from what I understand neither does Ethical Ads. If you don't want to disable your ad blocker, please consider donating on "
+ a href="https://patreon.com/cadey" { "Patreon" }
+ ". It helps fund the website's hosting bills and pay for the expensive technical editor that I use for my longer articles. Thanks and be well!"
+ },
+ ))
+ }
+ }
+ };
+
+ if HN.is_match(&referer) {
+ return nag;
+ }
+
+ if REDDIT.is_match(&referer) {
+ return nag;
+ }
+
+ html! {}
+}
+
+pub fn prerelease(post: &Post) -> Markup {
+ if Utc::today().num_days_from_ce() < post.date.num_days_from_ce() {
+ html! {
+ .warning {
+ (xeblog_conv("Mara".into(), "hacker".into(), html!{
+ "Hey, this post is set to go live on "
+ (format!("{}", post.detri()))
+ " UTC. Right now you are reading a pre-publication version of this post. Please do not share this on social media. This post will automatically go live for everyone on the intended publication date. If you want access to these posts, please join the "
+ a href="https://patreon.com/cadey" { "Patreon" }
+ ". It helps me afford the copyeditor that I contract for the technical content I write."
+ }))
+ }
+ }
+ } else {
+ html! {}
+ }
+}