Compare commits

..

4 Commits

Author SHA1 Message Date
Shadowfacts 9be7530b15
Use actual redirects 2019-09-18 13:15:47 -04:00
Shadowfacts 3965d03971
Fix comment info link 2019-09-18 13:12:35 -04:00
Shadowfacts 0d615ccb35
Copy images 2019-09-18 10:50:13 -04:00
Shadowfacts 4c3a069671
Include full timestamp in article meta 2019-09-18 10:42:41 -04:00
8 changed files with 24 additions and 52 deletions

View File

@ -1,9 +1,19 @@
import { promises as fs } from "fs"; import { promises as fs } from "fs";
import * as util from "../util"; import * as util from "../util";
import * as path from "path";
export default async function copy() { export default async function copy() {
util.write("favicon.ico", await fs.readFile("site/favicon.ico")); util.write("favicon.ico", await fs.readFile("site/favicon.ico"));
util.write("favicon-152.png", await fs.readFile("site/favicon-152.png")); util.write("favicon-152.png", await fs.readFile("site/favicon-152.png"));
util.write("shadowfacts.png", await fs.readFile("site/shadowfacts.png")); util.write("shadowfacts.png", await fs.readFile("site/shadowfacts.png"));
util.write("js/comments.js", await fs.readFile("site/js/comments.js")); util.write("js/comments.js", await fs.readFile("site/js/comments.js"));
// copy images
const dirs = await fs.readdir("site/img");
for (const dir of dirs) {
const imgs = await fs.readdir(path.join("site/img", dir));
for (const img of imgs) {
util.write(path.join("img", dir, img), await fs.readFile(path.join("site/img", dir, img)));
}
}
} }

View File

@ -4,7 +4,6 @@ import css from "./css";
import errors from "./errors"; import errors from "./errors";
import homepage from "./homepage"; import homepage from "./homepage";
import posts from "./posts"; import posts from "./posts";
import redirects from "./redirects";
import rss from "./rss"; import rss from "./rss";
import tutorials from "./tutorials"; import tutorials from "./tutorials";
@ -15,7 +14,6 @@ export = {
errors, errors,
homepage, homepage,
posts, posts,
redirects,
rss, rss,
tutorials tutorials
}; };

View File

@ -1,29 +0,0 @@
import * as metadata from "../metadata";
import { Page } from "../metadata";
import layout from "../layout";
import * as util from "../util";
async function generateRedirect(oldPermalink: string, newPermalink: string) {
const page = await metadata.get("site/redirect.html.ejs");
page.text = util.render(page.text, {
metadata: page.metadata,
newPermalink
}, "site/redirect.html.ejs");
page.text = await layout(page.text, page.metadata, page.metadata.layout!);
if (oldPermalink.endsWith("/")) {
oldPermalink += "index.html";
}
util.write(oldPermalink, page.text);
}
export default async function redirects(posts: Page[]) {
for (const post of posts) {
if (post.metadata.oldPermalink) {
await generateRedirect(post.metadata.oldPermalink, post.metadata.permalink);
}
}
}

View File

@ -20,7 +20,6 @@ async function generate(): Promise<Page[]> {
const posts = await generators.posts(); const posts = await generators.posts();
generators.homepage(posts); generators.homepage(posts);
generators.redirects(posts);
const categories = await generators.categories(posts); const categories = await generators.categories(posts);
await generators.rss(posts, categories, tutorials); await generators.rss(posts, categories, tutorials);
@ -74,6 +73,15 @@ async function generate(): Promise<Page[]> {
app.use(apRouter); app.use(apRouter);
app.use(express.static("out")); app.use(express.static("out"));
// redirect posts with changed permalinks
for (const post of posts) {
if (post.metadata.oldPermalink) {
app.get(post.metadata.oldPermalink, (req, res) => {
res.status(301).redirect(post.metadata.permalink);
});
}
}
app.use((err, req, res, next) => { app.use((err, req, res, next) => {
console.error("Unhandled error:", err); console.error("Unhandled error:", err);
res.status(500).sendFile("500.html", { res.status(500).sendFile("500.html", {

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

View File

@ -5,7 +5,8 @@
on on
<span> <span>
<% const formatted = formatDate(metadata.date, "MMM Do, YYYY") %> <% const formatted = formatDate(metadata.date, "MMM Do, YYYY") %>
<time itemprop="datePublished" datetime="<%= metadata.date.toISOString() %>"><%= formatted %></time> <% const fullFormatted = formatDate(metadata.date, "hh:mm:ss A MMM Do, YYYY") %>
<time itemprop="datePublished" datetime="<%= metadata.date.toISOString() %>" title="<%= fullFormatted %>"><%= formatted %></time>
</span> </span>
<% if (metadata.category) { %> <% if (metadata.category) { %>
in in

View File

@ -17,7 +17,7 @@ metadata.layout = "default.html.ejs"
</summary> </summary>
<p id="comments-info"> <p id="comments-info">
Comments powered by ActivityPub. To respond to this post or to another comment, copy its URL into the search interface of your client for Mastodon, Pleroma, or other compatible software. Comments powered by ActivityPub. To respond to this post or to another comment, copy its URL into the search interface of your client for Mastodon, Pleroma, or other compatible software.
<a href="/meta/2019/reincarnation#activitypub">Learn more</a>. <a href="/meta/2019/reincarnation/#activity-pub">Learn more</a>.
</p> </p>
<noscript> <noscript>
<p id="comments-js-warning"> <p id="comments-js-warning">

View File

@ -1,16 +0,0 @@
```
metadata.title = "Redirect"
metadata.layout = "default.html.ejs"
```
<script>
window.location = "<%= newPermalink %>";
</script>
<article>
<div class="article-content">
<p>
This page has moved to a new URL. If you are not automatically redirected, click <a href="<%= newPermalink %>">here</a>.
</p>
</div>
</article>