+
Social
+
+ These are other websites where you can find me and the things I do, including the pages where I publish my code and games and where I sometimes stream and upload videos. This list also includes a lot of ways to reach me.
+
+
+
+
+ The content that should be here is dynamically generated. Please enable JavaScript if you see this.
+
-
-
-
-
About
-
- Sometimes, some people ask me some questions about myself or my projects, so I decided to compile a list of some of the answers in a Q&A-like fashion so that I don't have to keep repeating them. If you're curious about me, this might be interesting to you!
-
-
-
The content that should be here is dynamically generated. Please enable JavaScript if you see this.
+ Additionally, here are some miscellaneous platforms:
+
+ - My Nintendo Switch friend code is SW-5281-8834-6801
+ - If you want to play my Mario Maker 2 levels, my ID is 8BH-566-4WF
+ - If you play The Sims 4, you can check out my builds on the gallery by searching for Ellpeck
+
+
+
+ The content that should be here is dynamically generated. Please enable JavaScript if you see this.
+
+
+
+
-
-
-
-
-
-
Blog
-
- Occasionally I enjoy writing stuff. So here's some of the stuff I've written. Just click on any of the headers to expand the post. Alternatively, you can subscribe to this blog using RSS, Atom or JSON.
-
-
-
-
The content that should be here is dynamically generated. Please enable JavaScript if you see this.
+
+
+
+
About
+
+ Sometimes, some people ask me some questions about myself or my projects, so I decided to compile a list of some of the answers in a Q&A-like fashion so that I don't have to keep repeating them. If you're curious about me, this might be interesting to you!
+
+
+ The content that should be here is dynamically generated. Please enable JavaScript if you see this.
+
+
+
+
+
+
+
+
Blog
+
+ Occasionally I enjoy writing stuff. So here's some of the stuff I've written. Just click on any of the headers to open the post. Alternatively, you can subscribe to this blog using RSS, Atom or JSON.
+
+
+
+ The content that should be here is dynamically generated. Please enable JavaScript if you see this.
+
+
-
diff --git a/node/blog.js b/node/blog.js
new file mode 100644
index 0000000..4474539
--- /dev/null
+++ b/node/blog.js
@@ -0,0 +1,69 @@
+const {
+ JSDOM
+} = require("jsdom");
+const fs = require("fs");
+const converter = require("./showdown")(2);
+
+module.exports = function () {
+ let folder = __dirname + "/../";
+ createBlogPages(folder);
+
+ fs.watchFile(folder + "blog/posts.json", function (curr, prev) {
+ if (curr.mtime == prev.mtime)
+ return;
+ createBlogPages(folder);
+ });
+}
+
+function createBlogPages(folder) {
+ console.log("Refreshing blog sub-sites...");
+
+ fs.readFile(folder + "index.html", function (_, data) {
+ // set up the template
+ let templateDom = new JSDOM(data);
+ var templateDoc = templateDom.window.document;
+ templateDoc.getElementById("main").innerHTML = "";
+ let template = templateDom.serialize();
+
+ fs.readFile(folder + "blog/posts.json", function (_, data) {
+ let json = JSON.parse(data);
+ for (let i = 0; i < json.length; i++) {
+ let post = json[i];
+ fs.readFile(folder + "blog/" + post.id + ".md", function (_, content) {
+ let dom = new JSDOM(template);
+ var document = dom.window.document;
+
+ document.title += " - " + post.name;
+ document.querySelector('meta[property="og:title"]').setAttribute("content", post.name);
+ document.querySelector('meta[name="description"]').setAttribute("content", post.summary);
+ document.querySelector('meta[property="og:description"]').setAttribute("content", post.summary);
+
+ var nav = "";
+ nav += '
Back to Main Page';
+ if (i > 0)
+ nav += '
Previous Post';
+ if (i < json.length - 1)
+ nav += '
Next Post';
+ document.getElementById("nav-items").innerHTML = nav;
+
+ var c = "";
+ c += '
';
+ c += '
'
+ c += '
' + post.name + '
';
+ c += '
'
+ c += converter.makeHtml(content.toString());
+ c += '
';
+ c += '
' + post.date + "";
+ var discussLink = post.discuss;
+ if (discussLink)
+ c += '
Discuss this post'
+ c += '
';
+ document.getElementById("main").innerHTML = c;
+
+ let html = dom.serialize();
+ fs.writeFile(folder + "blog-" + post.id + ".html", html, function (_, _) {});
+ });
+ }
+ });
+ });
+}
\ No newline at end of file
diff --git a/node/lib/showdown-footnotes.js b/node/lib/showdown-footnotes.js
new file mode 100644
index 0000000..3d1ca43
--- /dev/null
+++ b/node/lib/showdown-footnotes.js
@@ -0,0 +1,46 @@
+// Modified version of https://github.com/Kriegslustig/showdown-footnotes
+
+/*! showdown-prettify 06-01-2016 */
+(function (extension) {
+ 'use strict';
+
+ if (typeof showdown !== 'undefined') {
+ extension(showdown);
+ } else if (typeof define === 'function' && define.amd) {
+ define(['showdown'], extension);
+ } else if (typeof exports === 'object') {
+ module.exports = extension(require('showdown'));
+ } else {
+ throw Error('Could not find showdown library');
+ }
+
+}(function (showdown) {
+ 'use strict';
+ showdown.extension('footnotes', function () {
+ return [{
+ type: 'lang',
+ filter: function filter(text) {
+ return text.replace(/\[\^([\d\w]+)\]:\s*((\n+(\s{2,4}|\t).+)+)/mgi, function (str, name, rawContent, _, padding) {
+ var content = converter.makeHtml(rawContent.replace(new RegExp('^' + padding, 'gm'), ''));
+ return '';
+ });
+ }
+ }, {
+ type: 'lang',
+ filter: function filter(text) {
+ return text.replace(/\[\^([\d\w]+)\]:( |\n)((.+\n)*.+)/mgi, function (str, name, _, content) {
+ return '';
+ });
+ }
+ }, {
+ type: 'lang',
+ filter: function filter(text) {
+ return text.replace(/\[\^([\d\w]+)\]/mgi, function (str, name) {
+ return '
[' + name + ']';
+ });
+ }
+ }];
+ });
+}));
+
+//# sourceMappingURL=showdown-prettify.js.map
\ No newline at end of file
diff --git a/scripts/showdown-prettify.js b/node/lib/showdown-prettify.js
similarity index 89%
rename from scripts/showdown-prettify.js
rename to node/lib/showdown-prettify.js
index 3e3a8e5..6e17c2c 100644
--- a/scripts/showdown-prettify.js
+++ b/node/lib/showdown-prettify.js
@@ -1,3 +1,5 @@
+// Modified version of https://github.com/showdownjs/prettify-extension
+
/*! showdown-prettify 06-01-2016 */
(function (extension) {
'use strict';
diff --git a/node/rss.js b/node/rss.js
index caffc55..e19abc4 100644
--- a/node/rss.js
+++ b/node/rss.js
@@ -2,22 +2,25 @@ const {
Feed
} = require("feed");
const fs = require("fs");
-const showdown = require("showdown");
-const converter = new showdown.Converter({
- parseImgDimensions: true
-});
+const converter = require("./showdown")(1);
module.exports = function () {
let folder = __dirname + "/../";
+ createFeeds(folder);
+
fs.watchFile(folder + "blog/posts.json", function (curr, prev) {
if (curr.mtime == prev.mtime)
return;
- console.log("Refreshing feeds...");
- createFeed(function (feed) {
- fs.writeFile(folder + "feed.json", feed.json1(), function (_, _) {});
- fs.writeFile(folder + "rss.xml", feed.rss2(), function (_, _) {});
- fs.writeFile(folder + "atom.xml", feed.atom1(), function (_, _) {});
- });
+ createFeeds(folder);
+ });
+}
+
+function createFeeds(folder) {
+ console.log("Refreshing feeds...");
+ createFeed(function (feed) {
+ fs.writeFile(folder + "feed.json", feed.json1(), function (_, _) {});
+ fs.writeFile(folder + "rss.xml", feed.rss2(), function (_, _) {});
+ fs.writeFile(folder + "atom.xml", feed.atom1(), function (_, _) {});
});
}
@@ -44,15 +47,14 @@ function createFeed(callback) {
let json = JSON.parse(data);
for (let i = json.length - 1; i >= 0; i--) {
let post = json[i];
- let id = post["id"];
- let date = new Date(post["date"]);
+ let date = new Date(post.date);
- fs.readFile(__dirname + "/../blog/" + id + ".md", function (_, content) {
+ fs.readFile(__dirname + "/../blog/" + post.id + ".md", function (_, content) {
let html = converter.makeHtml(content.toString());
feed.addItem({
- title: post["name"],
- link: "https://ellpeck.de/#blog-" + id,
- description: post["summary"],
+ title: post.name,
+ link: "https://ellpeck.de/blog-" + post.id,
+ description: post.summary,
content: html,
date: date,
published: date
diff --git a/node/server.js b/node/server.js
index a83b2bf..88fba6e 100644
--- a/node/server.js
+++ b/node/server.js
@@ -1,2 +1,3 @@
require("./rss")();
+require("./blog")();
require("./sitemap")();
\ No newline at end of file
diff --git a/node/showdown.js b/node/showdown.js
new file mode 100644
index 0000000..e400bbd
--- /dev/null
+++ b/node/showdown.js
@@ -0,0 +1,10 @@
+const showdown = require("showdown");
+require("./lib/showdown-prettify");
+require("./lib/showdown-footnotes");
+module.exports = function (headerLevel) {
+ return new showdown.Converter({
+ parseImgDimensions: true,
+ headerLevelStart: headerLevel,
+ extensions: ["prettify", "footnotes"]
+ });
+}
\ No newline at end of file
diff --git a/node/sitemap.js b/node/sitemap.js
index cf79228..8f12ff6 100644
--- a/node/sitemap.js
+++ b/node/sitemap.js
@@ -5,48 +5,60 @@ const fs = require("fs");
module.exports = function () {
let folder = __dirname + "/../";
+ refreshSitemap(folder);
+
fs.watchFile(folder + "blog/posts.json", function (curr, prev) {
if (curr.mtime == prev.mtime)
return;
- console.log("Refreshing sitemap...");
+ refreshSitemap(folder);
+ });
+}
- let sitemap = createSitemap({
- hostname: 'https://ellpeck.de',
- urls: [{
- url: '/',
- priority: 0.8
- },
- {
- url: '/#projects',
- changefreq: 'monthly'
- },
- {
- url: '/#social',
- changefreq: 'yearly'
- },
- {
- url: '/#about',
- changefreq: 'monthly'
- },
- {
- url: '/#blog',
- changefreq: 'weekly',
- priority: 0.6
- }
- ]
- });
+function refreshSitemap(folder) {
+ console.log("Refreshing sitemap...");
- fs.readFile(folder + "blog/posts.json", function (_, data) {
- let json = JSON.parse(data);
-
- for (let post of json) {
- sitemap.add({
- url: "/#blog-" + post["id"],
- priority: 0.4
- });
+ let sitemap = createSitemap({
+ hostname: 'https://ellpeck.de',
+ urls: [{
+ url: '/',
+ priority: 0.8
+ },
+ {
+ url: '/#projects',
+ changefreq: 'monthly'
+ },
+ {
+ url: '/#social',
+ changefreq: 'yearly'
+ },
+ {
+ url: '/#about',
+ changefreq: 'monthly'
+ },
+ {
+ url: '/#blog',
+ changefreq: 'weekly',
+ priority: 0.6
+ },
+ {
+ url: '/foefrenzy',
+ priority: 0.7
+ },
+ {
+ url: '/foefrenzy/maps'
}
+ ]
+ });
- fs.writeFile(folder + "/sitemap.xml", sitemap.toXML(), function (_, _) {});
- });
+ fs.readFile(folder + "blog/posts.json", function (_, data) {
+ let json = JSON.parse(data);
+
+ for (let post of json) {
+ sitemap.add({
+ url: "/blog-" + post.id
+ });
+ }
+
+ fs.writeFile(folder + "/sitemap.xml", sitemap.toXML(), function (_, _) {});
});
}
\ No newline at end of file
diff --git a/scripts/about.js b/scripts/about.js
index d0aa4d6..a1c045f 100644
--- a/scripts/about.js
+++ b/scripts/about.js
@@ -44,8 +44,8 @@ const questions = [{
a: 'German, English, Java, JavaScript, C# and a bit of C, HTML and CSS.'
},
{
- "q": "How do you make games?",
- "a": "I usually use the .NET-based framework
MonoGame together with some libraries to make it a bit easier, including my own library, MLEM, which you can read about in the
Projects section."
+ q: "How do you make games?",
+ a: "I usually use the .NET-based framework
MonoGame together with some libraries to make it a bit easier, including my own library, MLEM, which you can read about in the
Projects section."
},
{
q: 'What\'s your favorite programming language?',
@@ -67,6 +67,10 @@ const questions = [{
q: 'How did you make this site?',
a: 'I made this page using
Bootstrap. The content is dynamically generated using JavaScript based on a bunch of JSON data. If you\'re curious about the (probably pretty messy) code, then you can check out the
GitHub repository.'
},
+ {
+ q: "What kind of music do you like?",
+ a: 'Mostly Rock and Pop. Sometimes I enjoy some good lofi hip hop music - beats to relax/study to, though. You can check out my
Last.fm if you\'re curious about specifics.'
+ },
{
q: 'What\'s a random fact about you?',
a: facts[Math.floor(Math.random() * facts.length)]
@@ -76,8 +80,8 @@ const questions = [{
let a = '';
for (question of questions) {
a += '
';
- a += 'Q: ' + question["q"] + '
';
- a += 'A: ' + question["a"];
+ a += 'Q: ' + question.q + '
';
+ a += 'A: ' + question.a;
a += '
';
}
$('#about-list').html(a);
diff --git a/scripts/blog.js b/scripts/blog.js
index 9695ff6..a94f296 100644
--- a/scripts/blog.js
+++ b/scripts/blog.js
@@ -1,8 +1,3 @@
-let converter = new showdown.Converter({
- parseImgDimensions: true,
- headerLevelStart: 3,
- extensions: ["prettify"]
-});
$.ajax({
dataType: "json",
url: "blog/posts.json",
@@ -12,63 +7,15 @@ $.ajax({
list.html("");
for (let i = json.length - 1; i >= 0; i--) {
var obj = json[i];
- let id = obj["id"];
let p = "";
- p += '
';
p += '
';
p += '
';
- p += '
' + obj["name"] + '
';
- p += '
' + obj["summary"] + '
';
- p += '
';
- p += '
' + obj["date"] + "";
- var discussLink = obj["discuss"];
- if (discussLink)
- p += '
'
+ p += '
';
+ p += '
' + obj.summary + '
';
+ p += '
' + obj.date + "";
p += '
';
list.append(p);
-
- $("#blog-button-" + id).on('click', function () {
- var post = $("#blog-post-" + id);
- if (post.html() !== "") {
- post.html("");
- var discuss = $("#blog-discuss-" + id);
- if (discuss.length)
- discuss.html("");
- $("#blog-summary-" + id).show();
- history.pushState(null, null, "#blog");
- } else {
- openBlogPost(id);
- history.pushState(null, null, "#blog-" + id);
- }
- });
- }
-
- if (window.location.hash.startsWith("#blog-")) {
- var anchor = $(window.location.hash);
- if (anchor.length) {
- openBlogPost(window.location.hash.substring(6), function () {
- $('html, body').animate({
- scrollTop: anchor.offset().top
- }, 0)
- });
- }
}
}
-});
-
-function openBlogPost(id, onDone) {
- $.get("blog/" + id + ".md", function (markdown) {
- let html = converter.makeHtml(markdown);
- $("#blog-post-" + id).html(html);
-
- var discuss = $("#blog-discuss-" + id);
- if (discuss.length)
- discuss.html("Discuss this post");
- $("#blog-summary-" + id).hide();
-
- PR.prettyPrint();
- if (onDone)
- onDone();
- });
-}
\ No newline at end of file
+});
\ No newline at end of file
diff --git a/scripts/greet.js b/scripts/greet.js
index 9f47676..ea6fd3c 100644
--- a/scripts/greet.js
+++ b/scripts/greet.js
@@ -18,6 +18,7 @@ const greetings = [
"Good evening!",
"Yo yo yo yo",
"Yo yo yo yo yo",
- "Henlo"
+ "Henlo",
+ "Sul Sul"
];
$('#intro-text').html(greetings[Math.floor(Math.random() * greetings.length)]);
\ No newline at end of file
diff --git a/scripts/projects.js b/scripts/projects.js
index 30e5b0e..a18d9dd 100644
--- a/scripts/projects.js
+++ b/scripts/projects.js
@@ -1,9 +1,8 @@
const projects = [{
name: "Foe Frenzy",
- desc: "Foe Frenzy is a fast-paced fighting game where you battle up to three of your friends with random, short-lasting items in an attempt to be the last survivor. It's currently in development, and will be released in December 2019.",
+ desc: "Foe Frenzy is a fast-paced fighting game where you battle up to three of your friends with random, short-lasting items in an attempt to be the last survivor. It's currently in development, and it will be released in December 2019.",
links: {
- "itch.io page": "https://ellpeck.itch.io/foefrenzy",
- "Watch the trailer": "https://www.youtube.com/watch?v=Z7ZeuVBNuf4"
+ "Check it out": "/foefrenzy"
},
status: "In development",
icon: "ff"
@@ -63,17 +62,16 @@ let p = '';
for (project of projects) {
p += '
';
p += '
';
- p += '
';
+ p += '
';
- p += '
' + project["name"] + '
';
- p += '
' + project["desc"] + '
';
- if (project["status"])
- p += '
' + project["status"] + '';
+ p += '
' + project.name + '
';
+ p += '
' + project.desc + '
';
+ if (project.status)
+ p += '
' + project.status + '';
- let links = project["links"];
- if (links) {
- for (let name in links) {
- p += '
' + name + '';
+ if (project.links) {
+ for (let name in project.links) {
+ p += '
' + name + '';
}
}
diff --git a/scripts/quote.js b/scripts/quote.js
index e0facc6..f789cd5 100644
--- a/scripts/quote.js
+++ b/scripts/quote.js
@@ -19,6 +19,9 @@
Michael Patrick Kelly
Madsen
The Crazy Ex-Girlfriend Cast
+ Wir Sind Helden
+ Juli
+ MALINDA
*/
const quotes = [
@@ -135,6 +138,25 @@ const quotes = [
"In one indescribable instant, it all falls into place",
"The darkness - he's handsome for a metaphor",
"This session is gonna be different",
- "He gives me love kernels"
+ "He gives me love kernels",
+ "Vielleicht wärst du Seetang, ich wäre Krill",
+ "Wir wär'n der Seegang, und dann wär'n wir still",
+ "Lass uns verschwinden, wir lösen uns auf",
+ "Ja, ich weiß, es war 'ne geile Zeit",
+ "Uns war kein Weg zu weit",
+ "Ich fahr, bis es in den Beinen sticht",
+ "Mit dem Fahrrad durch die Nacht",
+ "Rote Ampeln, leere Stadt",
+ "Ballerina in your music box",
+ "Forever turning to the same tune",
+ "They stare, but do they care about what you can't rearrange?",
+ "Who's face is in the mirror today?",
+ "Set fire to the roof of your house",
+ "Angel wings at the bus stop",
+ "Halos left on top of the bar",
+ "Heaven doesn't want me now",
+ "I wanna feel happy days, happy days",
+ "Hey kid, don't quit your daydream yet",
+ "Hey kid, don't listen to your head"
];
$('#quote-text').html('
' + quotes[Math.floor(Math.random() * quotes.length)] + '');
\ No newline at end of file
diff --git a/scripts/social.js b/scripts/social.js
index 93b535c..0bbb8f5 100644
--- a/scripts/social.js
+++ b/scripts/social.js
@@ -37,12 +37,12 @@ const socials = [{
let s = '';
for (social of socials) {
- s += '
';
- let icon = social["name"].toLowerCase();
- if (dark && social["darkIcon"])
+ s += '';
+ let icon = social.name.toLowerCase();
+ if (dark && social.darkIcon)
icon += '_dark';
s += '';
- s += social["name"];
+ s += social.name;
s += ''
}
$('#social-list').html(s);
diff --git a/style/dark.css b/style/dark.css
index 70ce8f3..1ae907a 100644
--- a/style/dark.css
+++ b/style/dark.css
@@ -29,4 +29,14 @@ body {
.modal-content {
background-color: #404142;
+}
+
+.blog-button:link,
+.blog-button:visited {
+ color: #d8d8d8 !important;
+}
+
+.blog-button:hover,
+.blog-button:active {
+ color: white !important;
}
\ No newline at end of file
diff --git a/style/style.css b/style/style.css
index 54275ec..88da8f9 100644
--- a/style/style.css
+++ b/style/style.css
@@ -1,8 +1,13 @@
+html {
+ position: relative;
+ min-height: 100%;
+}
+
body {
margin-top: 106px;
- position: relative;
font-family: Roboto;
background-color: #404142;
+ margin-bottom: 100px;
}
.main {
@@ -29,6 +34,7 @@ body {
.jumbotron {
margin-bottom: 0;
+ margin-top: 40px;
}
.project-image {
@@ -74,14 +80,22 @@ body {
}
.blog-anchor {
- display: block;
+ display: inline-block;
position: relative;
- top: -80px;
+ top: -86px;
visibility: hidden;
}
-.blog-button {
- cursor: pointer;
+.blog-button:link,
+.blog-button:visited {
+ color: rgb(73, 73, 73);
+ text-decoration: none;
+}
+
+.blog-button:hover,
+.blog-button:active {
+ color: black;
+ text-decoration: none;
}
.blog-entry {
@@ -93,16 +107,20 @@ body {
}
.blog-summary {
- margin-bottom: 15px;
- width: 90%;
+ width: 85%;
}
.footer {
+ position: absolute;
+ left: 0;
+ right: 0;
bottom: 0;
- line-height: 30px;
background-color: #f5f5f5;
- padding: 15px;
+ padding-left: 15px;
+ padding-right: 15px;
overflow: auto;
+ height: 60px;
+ line-height: 60px;
}
.impressum-data {
@@ -138,6 +156,27 @@ body {
margin: auto;
}
+.blog-isolated {
+ position: relative;
+}
+
+.blog-isolated-status {
+ bottom: 0 !important;
+ right: 0 !important;
+}
+
+.reading-mode {
+ position: absolute;
+ right: 20px;
+ top: 15px;
+}
+
+blockquote {
+ margin-left: 2em;
+ margin-right: 2em;
+ font-style: italic;
+}
+
@media (min-width: 1200px) {
.navbar {
width: 1200px;
@@ -162,6 +201,12 @@ body {
padding-left: 20px;
padding-right: 20px;
}
+
+ .reading-mode {
+ position: relative;
+ right: auto;
+ top: auto;
+ }
}
@media (max-width: 510px) {
Welcome to my little website! I'm Ellpeck, a student and programmer from Germany. I do a lot of stuff, actually. My life is pretty busy.
+Look around this website to find out more about my projects and other places you can find me!
+-- My Nintendo Switch friend code is SW-5281-8834-6801
- - If you want to play my Mario Maker 2 levels, my ID is 8BH-566-4WF
- - If you play The Sims 4, you can check out my builds on the gallery by searching for Ellpeck
-
Projects
++ Here is a list of some of the things that you might know me from. If you want to have a more in-depth look at everything I do, check out some of the sites linked in the Social section. +
+Social
++ These are other websites where you can find me and the things I do, including the pages where I publish my code and games and where I sometimes stream and upload videos. This list also includes a lot of ways to reach me. +
+About
-- Sometimes, some people ask me some questions about myself or my projects, so I decided to compile a list of some of the answers in a Q&A-like fashion so that I don't have to keep repeating them. If you're curious about me, this might be interesting to you! -
-+- My Nintendo Switch friend code is SW-5281-8834-6801
+ - If you want to play my Mario Maker 2 levels, my ID is 8BH-566-4WF
+ - If you play The Sims 4, you can check out my builds on the gallery by searching for Ellpeck
+
+Blog
-- Occasionally I enjoy writing stuff. So here's some of the stuff I've written. Just click on any of the headers to expand the post. Alternatively, you can subscribe to this blog using RSS, Atom or JSON. -
- -About
++ Sometimes, some people ask me some questions about myself or my projects, so I decided to compile a list of some of the answers in a Q&A-like fashion so that I don't have to keep repeating them. If you're curious about me, this might be interesting to you! +
+Blog
++ Occasionally I enjoy writing stuff. So here's some of the stuff I've written. Just click on any of the headers to open the post. Alternatively, you can subscribe to this blog using RSS, Atom or JSON. +
+ +' + post.name + '
'; + c += ''; - a += 'Q: ' + question["q"] + '
'; } $('#about-list').html(a); diff --git a/scripts/blog.js b/scripts/blog.js index 9695ff6..a94f296 100644 --- a/scripts/blog.js +++ b/scripts/blog.js @@ -1,8 +1,3 @@ -let converter = new showdown.Converter({ - parseImgDimensions: true, - headerLevelStart: 3, - extensions: ["prettify"] -}); $.ajax({ dataType: "json", url: "blog/posts.json", @@ -12,63 +7,15 @@ $.ajax({ list.html(""); for (let i = json.length - 1; i >= 0; i--) { var obj = json[i]; - let id = obj["id"]; let p = ""; - p += ''; p += ''; - a += 'A: ' + question["a"]; + a += 'Q: ' + question.q + '
'; + a += 'A: ' + question.a; a += '
' + obj["name"] + '
'; - p += '' + obj.name + '
'; + p += '' + project["name"] + '
'; - p += '' + project["desc"] + '
'; - if (project["status"]) - p += '' + project["status"] + ''; + p += '' + project.name + '
'; + p += '' + project.desc + '
'; + if (project.status) + p += '' + project.status + ''; - let links = project["links"]; - if (links) { - for (let name in links) { - p += '' + name + ''; + if (project.links) { + for (let name in project.links) { + p += '' + name + ''; } } diff --git a/scripts/quote.js b/scripts/quote.js index e0facc6..f789cd5 100644 --- a/scripts/quote.js +++ b/scripts/quote.js @@ -19,6 +19,9 @@ Michael Patrick Kelly Madsen The Crazy Ex-Girlfriend Cast + Wir Sind Helden + Juli + MALINDA */ const quotes = [ @@ -135,6 +138,25 @@ const quotes = [ "In one indescribable instant, it all falls into place", "The darkness - he's handsome for a metaphor", "This session is gonna be different", - "He gives me love kernels" + "He gives me love kernels", + "Vielleicht wärst du Seetang, ich wäre Krill", + "Wir wär'n der Seegang, und dann wär'n wir still", + "Lass uns verschwinden, wir lösen uns auf", + "Ja, ich weiß, es war 'ne geile Zeit", + "Uns war kein Weg zu weit", + "Ich fahr, bis es in den Beinen sticht", + "Mit dem Fahrrad durch die Nacht", + "Rote Ampeln, leere Stadt", + "Ballerina in your music box", + "Forever turning to the same tune", + "They stare, but do they care about what you can't rearrange?", + "Who's face is in the mirror today?", + "Set fire to the roof of your house", + "Angel wings at the bus stop", + "Halos left on top of the bar", + "Heaven doesn't want me now", + "I wanna feel happy days, happy days", + "Hey kid, don't quit your daydream yet", + "Hey kid, don't listen to your head" ]; $('#quote-text').html('' + quotes[Math.floor(Math.random() * quotes.length)] + ''); \ No newline at end of file diff --git a/scripts/social.js b/scripts/social.js index 93b535c..0bbb8f5 100644 --- a/scripts/social.js +++ b/scripts/social.js @@ -37,12 +37,12 @@ const socials = [{ let s = ''; for (social of socials) { - s += ''; - let icon = social["name"].toLowerCase(); - if (dark && social["darkIcon"]) + s += ''; + let icon = social.name.toLowerCase(); + if (dark && social.darkIcon) icon += '_dark'; s += ''; - s += social["name"]; + s += social.name; s += '' } $('#social-list').html(s); diff --git a/style/dark.css b/style/dark.css index 70ce8f3..1ae907a 100644 --- a/style/dark.css +++ b/style/dark.css @@ -29,4 +29,14 @@ body { .modal-content { background-color: #404142; +} + +.blog-button:link, +.blog-button:visited { + color: #d8d8d8 !important; +} + +.blog-button:hover, +.blog-button:active { + color: white !important; } \ No newline at end of file diff --git a/style/style.css b/style/style.css index 54275ec..88da8f9 100644 --- a/style/style.css +++ b/style/style.css @@ -1,8 +1,13 @@ +html { + position: relative; + min-height: 100%; +} + body { margin-top: 106px; - position: relative; font-family: Roboto; background-color: #404142; + margin-bottom: 100px; } .main { @@ -29,6 +34,7 @@ body { .jumbotron { margin-bottom: 0; + margin-top: 40px; } .project-image { @@ -74,14 +80,22 @@ body { } .blog-anchor { - display: block; + display: inline-block; position: relative; - top: -80px; + top: -86px; visibility: hidden; } -.blog-button { - cursor: pointer; +.blog-button:link, +.blog-button:visited { + color: rgb(73, 73, 73); + text-decoration: none; +} + +.blog-button:hover, +.blog-button:active { + color: black; + text-decoration: none; } .blog-entry { @@ -93,16 +107,20 @@ body { } .blog-summary { - margin-bottom: 15px; - width: 90%; + width: 85%; } .footer { + position: absolute; + left: 0; + right: 0; bottom: 0; - line-height: 30px; background-color: #f5f5f5; - padding: 15px; + padding-left: 15px; + padding-right: 15px; overflow: auto; + height: 60px; + line-height: 60px; } .impressum-data { @@ -138,6 +156,27 @@ body { margin: auto; } +.blog-isolated { + position: relative; +} + +.blog-isolated-status { + bottom: 0 !important; + right: 0 !important; +} + +.reading-mode { + position: absolute; + right: 20px; + top: 15px; +} + +blockquote { + margin-left: 2em; + margin-right: 2em; + font-style: italic; +} + @media (min-width: 1200px) { .navbar { width: 1200px; @@ -162,6 +201,12 @@ body { padding-left: 20px; padding-right: 20px; } + + .reading-mode { + position: relative; + right: auto; + top: auto; + } } @media (max-width: 510px) {