Add blog, improve stuff somewhat
This commit is contained in:
parent
b7097dfc91
commit
ef51ddc89a
14 changed files with 193 additions and 29 deletions
21
.gitea/workflows/.vercel.yaml
Normal file
21
.gitea/workflows/.vercel.yaml
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# name: Vercel Production Deployment
|
||||||
|
# env:
|
||||||
|
# VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
|
||||||
|
# VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
|
||||||
|
# on:
|
||||||
|
# push:
|
||||||
|
# branches:
|
||||||
|
# - main
|
||||||
|
# jobs:
|
||||||
|
# Deploy-Production:
|
||||||
|
# runs-on: ubuntu-latest
|
||||||
|
# steps:
|
||||||
|
# - uses: actions/checkout@v2
|
||||||
|
# - name: Install Vercel CLI
|
||||||
|
# run: npm install --global vercel@latest
|
||||||
|
# - name: Pull Vercel Environment Information
|
||||||
|
# run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }}
|
||||||
|
# - name: Build Project Artifacts
|
||||||
|
# run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }}
|
||||||
|
# - name: Deploy Project Artifacts to Vercel
|
||||||
|
# run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }}
|
|
@ -1,21 +0,0 @@
|
||||||
name: Vercel Production Deployment
|
|
||||||
env:
|
|
||||||
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
|
|
||||||
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
jobs:
|
|
||||||
Deploy-Production:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- name: Install Vercel CLI
|
|
||||||
run: npm install --global vercel@latest
|
|
||||||
- name: Pull Vercel Environment Information
|
|
||||||
run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }}
|
|
||||||
- name: Build Project Artifacts
|
|
||||||
run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }}
|
|
||||||
- name: Deploy Project Artifacts to Vercel
|
|
||||||
run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }}
|
|
|
@ -21,6 +21,7 @@
|
||||||
<h2>Please wait.</h2>
|
<h2>Please wait.</h2>
|
||||||
<p>If this page does not load, try enabling JavaScript.</p>
|
<p>If this page does not load, try enabling JavaScript.</p>
|
||||||
<small>(This site won't work well without it.)</small>
|
<small>(This site won't work well without it.)</small>
|
||||||
|
<p>Or <a href="/">go back home</a>.</p>
|
||||||
<script>
|
<script>
|
||||||
window.addEventListener("load", function () {
|
window.addEventListener("load", function () {
|
||||||
document.querySelector("#loading").style.display = "none";
|
document.querySelector("#loading").style.display = "none";
|
||||||
|
|
|
@ -1,8 +1,16 @@
|
||||||
<section>
|
<section class="nav">
|
||||||
<p>
|
<p>
|
||||||
<a href="/">Home</a> - <a href="/branding/">Branding</a> -
|
<a href="/">Home</a> <a href="/branding/">Branding</a>
|
||||||
<a href="/links/">Links</a> - <a href="/projects/">Projects</a> -
|
|
||||||
<a href="/about/">About</a> -
|
|
||||||
<a href="/site/">Site Information</a>
|
<a href="/site/">Site Information</a>
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
<a href="/blog/?blog=mtr">Blog</a>
|
||||||
|
<a href="/blog/?blog=stories">Stories</a>
|
||||||
|
<a href="/blog/?src=img">Images</a>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<a href="/links/">Links</a>
|
||||||
|
<a href="/projects/">Projects</a>
|
||||||
|
<a href="/about/">About</a>
|
||||||
|
</p>
|
||||||
</section>
|
</section>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"name": "projects-windowed",
|
"name": "projects-windowed",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "nodemon --exec 'gulp;node debug.js' --ext '*' --ignore 'output/*'"
|
"dev": "nodemon --exec 'rm -rf output/*;gulp;node debug.js' --ext '*' --ignore 'output/*'"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"gulp": "^4.0.2"
|
"gulp": "^4.0.2"
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
<$ loader.html $>
|
||||||
<header>
|
<header>
|
||||||
<section>
|
<section>
|
||||||
<h1>About</h1>
|
<h1>About</h1>
|
||||||
|
|
46
views/blog/index.html
Executable file
46
views/blog/index.html
Executable file
|
@ -0,0 +1,46 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>Project Windows</title>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<link rel="stylesheet" href="/styles/normal.css" />
|
||||||
|
<link rel="stylesheet" href="/styles/windows.css" />
|
||||||
|
<link rel="stylesheet" href="/styles/style.css" />
|
||||||
|
<style>
|
||||||
|
@import url("https://fonts.googleapis.com/css2?family=Lexend+Deca:wght@100;200;300;400;500;600;700;800;900&display=swap");
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--base-scale: 16px;
|
||||||
|
|
||||||
|
--background-color: hsl(15, 100%, 15%);
|
||||||
|
--color: hsl(15, 100%, 85%);
|
||||||
|
--accent-color: hsl(15, 100%, 50%);
|
||||||
|
--accent-color-fg: hsl(15, 100%, 95%);
|
||||||
|
--font-family: "Lexend Deca";
|
||||||
|
--document-width: 40em;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<$ loader.html $>
|
||||||
|
<section>
|
||||||
|
<h1>Blog</h1>
|
||||||
|
<p>A place where I post unhinged ramblings (blog posts).</p>
|
||||||
|
</section>
|
||||||
|
<$ nav.html $>
|
||||||
|
<section id="data_get">
|
||||||
|
<h1>Getting blogs...</h1>
|
||||||
|
</section>
|
||||||
|
<div id="WindowHolder"></div>
|
||||||
|
<section id="accessibility" hidden></section>
|
||||||
|
<script src="/scripts/windows.js"></script>
|
||||||
|
<script src="/scripts/accessibility.js"></script>
|
||||||
|
<script src="./scripts/data_get_blog.js"></script>
|
||||||
|
<script>
|
||||||
|
window.manager = new WindowManager(
|
||||||
|
document.getElementById("WindowHolder")
|
||||||
|
);
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
35
views/blog/post/index.html
Executable file
35
views/blog/post/index.html
Executable file
|
@ -0,0 +1,35 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>Project Windows</title>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<link rel="stylesheet" href="/styles/normal.css" />
|
||||||
|
<link rel="stylesheet" href="/styles/windows.css" />
|
||||||
|
<link rel="stylesheet" href="/styles/style.css" />
|
||||||
|
<style>
|
||||||
|
@import url("https://fonts.googleapis.com/css2?family=Lexend+Deca:wght@100;200;300;400;500;600;700;800;900&display=swap");
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--base-scale: 16px;
|
||||||
|
|
||||||
|
--background-color: hsl(15, 100%, 15%);
|
||||||
|
--color: hsl(15, 100%, 85%);
|
||||||
|
--accent-color: hsl(15, 100%, 50%);
|
||||||
|
--accent-color-fg: hsl(15, 100%, 95%);
|
||||||
|
--font-family: "Lexend Deca";
|
||||||
|
--document-width: 40em;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<$ loader.html $>
|
||||||
|
<section id="data_get">
|
||||||
|
<h1>Getting post...</h1>
|
||||||
|
</section>
|
||||||
|
<section id="accessibility" hidden></section>
|
||||||
|
<script src="/scripts/accessibility.js"></script>
|
||||||
|
<script src="./scripts/showdown.min.js"></script>
|
||||||
|
<script src="./scripts/data_get_blog_post.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
24
views/blog/post/scripts/data_get_blog_post.js
Normal file
24
views/blog/post/scripts/data_get_blog_post.js
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
const data_get = document.getElementById("data_get");
|
||||||
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
|
const source = urlParams.get("src") || "blog";
|
||||||
|
const blog = urlParams.get("blog") || "mtr";
|
||||||
|
|
||||||
|
const conv = new showdown.Converter({
|
||||||
|
simplifiedAutoLink: true,
|
||||||
|
simpleLineBreaks: true,
|
||||||
|
requireSpaceBeforeHeadingText: true,
|
||||||
|
encodeEmails: true,
|
||||||
|
excludeTrailingPunctuationFromURLs: true,
|
||||||
|
omitExtraWLInCodeBlocks: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
fetch(
|
||||||
|
`https://${source}.abtmtr.link/api/collections/${blog}/posts/${urlParams.get(
|
||||||
|
"slug"
|
||||||
|
)}?body=html`
|
||||||
|
)
|
||||||
|
.then((x) => x.json())
|
||||||
|
.then(({ data }) => {
|
||||||
|
data_get.innerHTML = `<h1>${data.title}</h1>
|
||||||
|
<section>${conv.makeHtml(data.body.replace(/#\w+/gim, ""))}</section>`;
|
||||||
|
});
|
3
views/blog/post/scripts/showdown.min.js
vendored
Normal file
3
views/blog/post/scripts/showdown.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
34
views/blog/scripts/data_get_blog.js
Normal file
34
views/blog/scripts/data_get_blog.js
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
const data_get = document.getElementById("data_get");
|
||||||
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
|
const source = urlParams.get("src") || "blog";
|
||||||
|
const blog = urlParams.get("blog") || "mtr";
|
||||||
|
fetch(
|
||||||
|
`https://${source}.abtmtr.link/api/collections/${blog}/posts?body=html&page=${
|
||||||
|
urlParams.get("page") || 1
|
||||||
|
}`
|
||||||
|
)
|
||||||
|
.then((x) => x.json())
|
||||||
|
.then(({ data }) => {
|
||||||
|
data_get.innerHTML = `<style>${data.style_sheet}</style>
|
||||||
|
${data.posts
|
||||||
|
.map(
|
||||||
|
(post) => `
|
||||||
|
<h1><a href="/blog/post/?blog=${data.alias}&slug=${
|
||||||
|
post.slug
|
||||||
|
}&src=${source}" target="_blank">${post.title}</a></h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<button
|
||||||
|
onclick="window.manager.createWindow('/blog/post/?blog=${
|
||||||
|
data.alias
|
||||||
|
}&slug=${post.slug}&src=${source}', false)"
|
||||||
|
>
|
||||||
|
Open in Window
|
||||||
|
</button>
|
||||||
|
</p>
|
||||||
|
<p>Posted ${new Date(post.created).toLocaleDateString()}</p>
|
||||||
|
${source == "img" ? `<p><img src="${post.images[0]}" /></p>` : ""}`
|
||||||
|
)
|
||||||
|
.join("")}
|
||||||
|
`;
|
||||||
|
});
|
|
@ -22,6 +22,7 @@
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
<$ loader.html $>
|
||||||
<header>
|
<header>
|
||||||
<section>
|
<section>
|
||||||
<h1>Links</h1>
|
<h1>Links</h1>
|
||||||
|
|
|
@ -21,8 +21,8 @@ body {
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
max-width: var(--document-width);
|
max-width: var(--document-width);
|
||||||
margin: auto;
|
margin: auto;
|
||||||
padding-inline: 0.5em;
|
padding-inline: 1em;
|
||||||
padding-block: 0.5em;
|
padding-block: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
html.base {
|
html.base {
|
||||||
|
@ -83,7 +83,7 @@ h3 {
|
||||||
|
|
||||||
p {
|
p {
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
line-height: 1.25em;
|
line-height: 1.5em;
|
||||||
margin-inline: 0;
|
margin-inline: 0;
|
||||||
margin-block: 0.5em;
|
margin-block: 0.5em;
|
||||||
}
|
}
|
||||||
|
@ -123,6 +123,11 @@ hr {
|
||||||
margin-block: 0.25em;
|
margin-block: 0.25em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
margin-inline: 1em;
|
||||||
|
margin-block: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
/* Form normalize */
|
/* Form normalize */
|
||||||
|
|
||||||
html {
|
html {
|
||||||
|
|
|
@ -23,3 +23,9 @@
|
||||||
img {
|
img {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nav p {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr 1fr;
|
||||||
|
gap: 1em;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue