jscom_ice 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +17 -1
- data/_includes/carousel.html +15 -0
- data/_includes/contact-me-form.html +64 -0
- data/_includes/embed-audio.html +4 -0
- data/_includes/footer.html +11 -0
- data/_includes/header.html +165 -0
- data/_includes/john_landing.html +9 -0
- data/_includes/navbar.html +47 -0
- data/_includes/post_navigation.html +20 -0
- data/_includes/posts.html +33 -0
- data/_includes/scripts.html +16 -0
- data/_includes/tags.html +22 -0
- data/_includes/yearly_content.html +19 -0
- data/_layouts/default.html +38 -0
- data/_layouts/home.html +13 -0
- data/_layouts/lore.html +19 -0
- data/_layouts/page.html +15 -0
- data/_layouts/post.html +48 -0
- data/_sass/base/_base.scss +164 -0
- data/_sass/component/_all-components.scss +11 -0
- data/_sass/component/_author.scss +37 -0
- data/_sass/component/_carousel.scss +17 -0
- data/_sass/component/_code.scss +25 -0
- data/_sass/component/_codeblock.scss +32 -0
- data/_sass/component/_contact.scss +9 -0
- data/_sass/component/_form.scss +42 -0
- data/_sass/component/_highlight.scss +164 -0
- data/_sass/component/_navbar.scss +77 -0
- data/_sass/component/_post-navigation.scss +40 -0
- data/_sass/component/_posts.scss +36 -0
- data/_sass/component/_table.scss +19 -0
- data/_sass/layout/_footer.scss +20 -0
- data/_sass/layout/_layout.scss +104 -0
- data/_sass/main.scss +68 -0
- data/_sass/pages/_home.scss +5 -0
- data/_sass/pages/_page.scss +20 -0
- data/_sass/pages/_post.scss +57 -0
- data/assets/css/bootstrap.css.map +1 -0
- data/assets/css/bootstrap.min.css +6 -0
- data/assets/css/style.scss +4 -0
- data/assets/js/bootstrap.js +3894 -0
- data/assets/js/bootstrap.js.map +1 -0
- data/assets/js/bootstrap.min.js +7 -0
- data/assets/js/bootstrap.min.js.map +1 -0
- data/assets/js/jquery-3.7.0.min.js +2 -0
- data/assets/js/popper.min.js +6 -0
- metadata +47 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4e9f9214e09092b7a94a193b13bde713f0fc48d7b8643badfcd535330c91d7c
|
4
|
+
data.tar.gz: a6eba41280d49bf1901052ae3fef27216f1ab6862b3b872221c52be69a2a727b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dd4b36109e0758c3c56562c64935931e8cac11dd9fa97b5655307f735f32702e69f85e607312cd23e69e158d5ce826759dbf1a4755c66bff6f1687d814a60780
|
7
|
+
data.tar.gz: feaf2f875112cc7745daa7ac505e5c31eb69bc06ab3f73d188c6e67cc34e5dfb79f750d0902bf5ef3be38e054418496ee0bc6c6ba163b5371a2081c4aa14fb22
|
data/README.md
CHANGED
@@ -1,2 +1,18 @@
|
|
1
1
|
# jscom-ice
|
2
|
-
|
2
|
+
|
3
|
+
A Jekyll theme for (johnsosoka.com)[https://johnsosoka.com]
|
4
|
+
|
5
|
+
**NOTE:** This repository and theme are open source, but not meant for public consumption. If you would like to use this
|
6
|
+
theme, please fork the repository and make any changes you would like.
|
7
|
+
|
8
|
+
## Usage
|
9
|
+
|
10
|
+
1. Download the gem from github
|
11
|
+
2. manually install the gem `$ gem install ./jscom-ice-0.0.1.gem`
|
12
|
+
|
13
|
+
## Local Development
|
14
|
+
|
15
|
+
1. Make changes to the theme
|
16
|
+
2. build the gem `$ gem build jscom_ice_theme.gemspec`
|
17
|
+
3. Install the gem `$ gem install ./jscom-ice-0.0.1.gem`
|
18
|
+
4. Update the Gemfile to use the local gem
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
|
2
|
+
<div class="carousel-inner">
|
3
|
+
{% for image in include.images %}
|
4
|
+
<div class="carousel-item {% if forloop.first %}active{% endif %}" data-interval="4000">
|
5
|
+
<img class="d-block w-100" src="{{ image }}" alt="Slide {{ forloop.index }}">
|
6
|
+
</div>
|
7
|
+
{% endfor %}
|
8
|
+
</div>
|
9
|
+
<a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
|
10
|
+
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
11
|
+
</a>
|
12
|
+
<a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
|
13
|
+
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
14
|
+
</a>
|
15
|
+
</div>
|
@@ -0,0 +1,64 @@
|
|
1
|
+
<div class="container-fluid mt-5">
|
2
|
+
<form id="contactMeForm">
|
3
|
+
<!-- Alert on Success/Failure -->
|
4
|
+
<div id="notification" class="alert mt-3" role="alert" style="display: none;"></div>
|
5
|
+
<div class="form-group">
|
6
|
+
<input type="text" class="form-control" id="name" name="user_name" placeholder="Name">
|
7
|
+
</div>
|
8
|
+
<div class="form-group">
|
9
|
+
<input type="email" class="form-control" id="mail" name="user_email" placeholder="Email">
|
10
|
+
</div>
|
11
|
+
<div class="form-group">
|
12
|
+
<textarea class="form-control" id="msg" name="user_message" placeholder="Message"></textarea>
|
13
|
+
</div>
|
14
|
+
<button type="button" class="btn btn-primary btn-block" id="contact_submit">Send your message</button>
|
15
|
+
</form>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<!-- TODO - this isn't working when using the scripts.html include ... -->
|
19
|
+
<script src="/assets/js/jquery-3.7.0.min.js"></script>
|
20
|
+
|
21
|
+
<script>
|
22
|
+
function submitContact(payload) {
|
23
|
+
$.ajax({
|
24
|
+
url : "{{ site.contact.api.url }}",
|
25
|
+
type: "POST",
|
26
|
+
dataType: "json",
|
27
|
+
data: payload,
|
28
|
+
success: function(data){
|
29
|
+
console.log(data);
|
30
|
+
$('#notification').addClass('alert-success').text('Message Sent!').show();
|
31
|
+
clearForm();
|
32
|
+
},
|
33
|
+
error: function(){
|
34
|
+
console.log("Error in the request");
|
35
|
+
$('#notification').addClass('alert-danger').text('Something went wrong :(').show();
|
36
|
+
}
|
37
|
+
});
|
38
|
+
}
|
39
|
+
|
40
|
+
function clearForm() {
|
41
|
+
$('#name').val('');
|
42
|
+
$('#mail').val('');
|
43
|
+
$('#msg').val('');
|
44
|
+
}
|
45
|
+
|
46
|
+
|
47
|
+
function buildPayload() {
|
48
|
+
var contactMePayload = {
|
49
|
+
contact_name : $('#name').val(),
|
50
|
+
contact_email : $('#mail').val(),
|
51
|
+
contact_message : $('#msg').val()
|
52
|
+
};
|
53
|
+
|
54
|
+
return JSON.stringify(contactMePayload);
|
55
|
+
}
|
56
|
+
|
57
|
+
$('#contact_submit').click(function() {
|
58
|
+
var payload = buildPayload();
|
59
|
+
console.log(payload);
|
60
|
+
submitContact(payload);
|
61
|
+
});
|
62
|
+
</script>
|
63
|
+
|
64
|
+
<!-- TODO - this isn't working with my self hosted jquery?? -->
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<footer class="footer bg-transparent mt-auto py-3 text-light">
|
2
|
+
<div class="container text-center">
|
3
|
+
{% for link in site.data.footer_links %}
|
4
|
+
<a class="mb-1 mx-2 footer_item" href="{{ link.url }}">{{ link.title }}</a>
|
5
|
+
{% endfor %}
|
6
|
+
</div>
|
7
|
+
<small class="copyright-text">
|
8
|
+
John Sosoka<br>
|
9
|
+
© {{site.site_est_year}} - {{ site.time | date: "%Y" }}
|
10
|
+
</small>
|
11
|
+
</footer>
|
@@ -0,0 +1,165 @@
|
|
1
|
+
<head prefix="og: http://ogp.me/ns#">
|
2
|
+
<meta charset="UTF-8" />
|
3
|
+
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
4
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
5
|
+
<meta name="mobile-web-app-capable" content="yes" />
|
6
|
+
<meta name="apple-mobile-web-app-capable" content="yes" />
|
7
|
+
<meta name="application-name" content="{{ site.title }}" />
|
8
|
+
<meta name="apple-mobile-web-app-status-bar-style" content="#fff" />
|
9
|
+
<meta name="apple-mobile-web-app-title" content="{{ site.title }}" />
|
10
|
+
<title>
|
11
|
+
{% if page.title %}{{ page.title | escape }} - {{ site.title }}{% else %}{{
|
12
|
+
site.title | escape }}{% endif %}
|
13
|
+
</title>
|
14
|
+
<link
|
15
|
+
rel="alternate"
|
16
|
+
href="{{
|
17
|
+
page.url | remove: 'index.html' | remove: '.html' | absolute_url
|
18
|
+
}}"
|
19
|
+
hreflang="{{ site.lang }}"
|
20
|
+
/>
|
21
|
+
<link
|
22
|
+
rel="canonical"
|
23
|
+
href="{{
|
24
|
+
page.url | remove: 'index.html' | remove: '.html' | absolute_url
|
25
|
+
}}"
|
26
|
+
/>
|
27
|
+
{% if paginator.previous_page %}
|
28
|
+
<link
|
29
|
+
rel="prev"
|
30
|
+
href="{{
|
31
|
+
paginator.previous_page_path
|
32
|
+
| remove: 'index.html'
|
33
|
+
| remove: '.html'
|
34
|
+
}}"
|
35
|
+
/>
|
36
|
+
{% endif %} {% if paginator.next_page %}
|
37
|
+
<link
|
38
|
+
rel="next"
|
39
|
+
href="{{
|
40
|
+
paginator.next_page_path
|
41
|
+
| remove: 'index.html'
|
42
|
+
| remove: '.html'
|
43
|
+
}}"
|
44
|
+
/>
|
45
|
+
{% endif %}
|
46
|
+
<meta
|
47
|
+
name="description"
|
48
|
+
content="{{
|
49
|
+
page.description
|
50
|
+
| default: site.description
|
51
|
+
| strip_html
|
52
|
+
| normalize_whitespace
|
53
|
+
| truncate: 200
|
54
|
+
| escape
|
55
|
+
}}"
|
56
|
+
/>
|
57
|
+
<meta name="referrer" content="no-referrer-when-downgrade" />
|
58
|
+
<meta
|
59
|
+
property="og:site_name"
|
60
|
+
content="{% if page.title %}{{ page.title | escape }} | {{
|
61
|
+
site.author.name
|
62
|
+
}}{% else %}{{ site.title | escape }}{% endif %}"
|
63
|
+
/>
|
64
|
+
<meta
|
65
|
+
property="og:title"
|
66
|
+
content="{% if page.title %}{{ page.title | escape }} | {{
|
67
|
+
site.author.name
|
68
|
+
}}{% else %}{{ site.title | escape }}{% endif %}"
|
69
|
+
/>
|
70
|
+
{% if page.location %}
|
71
|
+
<meta property="og:type" content="article" />
|
72
|
+
<meta
|
73
|
+
property="article:publisher"
|
74
|
+
content="https://web.facebook.com/{{ site.author.facebook }}"
|
75
|
+
/>
|
76
|
+
{% else %}
|
77
|
+
<meta property="og:type" content="website" />
|
78
|
+
{% endif %}
|
79
|
+
<meta
|
80
|
+
property="og:url"
|
81
|
+
content="{{
|
82
|
+
page.url | remove: 'index.html' | remove: '.html' | absolute_url
|
83
|
+
}}"
|
84
|
+
/>
|
85
|
+
<meta
|
86
|
+
property="og:description"
|
87
|
+
content="{{
|
88
|
+
page.description
|
89
|
+
| default: site.description
|
90
|
+
| strip_html
|
91
|
+
| normalize_whitespace
|
92
|
+
| truncate: 200
|
93
|
+
| escape
|
94
|
+
}}"
|
95
|
+
/>
|
96
|
+
{% if page.image %}
|
97
|
+
<meta property="og:image" content="{{ page.image | absolute_url }}" />
|
98
|
+
{% else %}
|
99
|
+
<meta property="og:image" content="{{ site.og_image | absolute_url }}" />
|
100
|
+
{% endif %}
|
101
|
+
<meta property="og:image:width" content="640" />
|
102
|
+
<meta property="og:image:height" content="640" />
|
103
|
+
<meta name="twitter:card" content="summary" />
|
104
|
+
<meta
|
105
|
+
name="twitter:title"
|
106
|
+
content="{% if page.title %}{{ page.title | escape }} | {{
|
107
|
+
site.author.twitter
|
108
|
+
}}{% else %}{{ site.title | escape }}{% endif %}"
|
109
|
+
/>
|
110
|
+
<meta
|
111
|
+
name="twitter:url"
|
112
|
+
content="{{
|
113
|
+
page.url | remove: 'index.html' | remove: '.html' | absolute_url
|
114
|
+
}}"
|
115
|
+
/>
|
116
|
+
<meta name="twitter:site" content="@{{ site.author.twitter }}" />
|
117
|
+
<meta name="twitter:creator" content="@{{ site.author.twitter }}" />
|
118
|
+
<meta
|
119
|
+
name="twitter:description"
|
120
|
+
content="{{
|
121
|
+
page.description
|
122
|
+
| default: site.description
|
123
|
+
| strip_html
|
124
|
+
| normalize_whitespace
|
125
|
+
| truncate: 200
|
126
|
+
| escape
|
127
|
+
}}"
|
128
|
+
/>
|
129
|
+
{% if page.image %}
|
130
|
+
<meta name="twitter:image" content="{{ page.image | absolute_url }}" />
|
131
|
+
{% else %}
|
132
|
+
<meta name="twitter:image" content="{{ site.image | absolute_url }}" />
|
133
|
+
{% endif %} {% feed_meta %}
|
134
|
+
<link
|
135
|
+
rel="apple-touch-icon"
|
136
|
+
sizes="180x180"
|
137
|
+
href="https://media.johnsosoka.com/old/favicons/apple-touch-icon.png"
|
138
|
+
/>
|
139
|
+
<link
|
140
|
+
rel="icon"
|
141
|
+
type="image/png"
|
142
|
+
sizes="32x32"
|
143
|
+
href="https://media.johnsosoka.com/assets/favicons/favicon-32x32.png"
|
144
|
+
/>
|
145
|
+
<link
|
146
|
+
rel="icon"
|
147
|
+
type="image/png"
|
148
|
+
sizes="16x16"
|
149
|
+
href="https://media.johnsosoka.com/assets/favicons/favicon-16x16.png"
|
150
|
+
/>
|
151
|
+
<link
|
152
|
+
rel="icon"
|
153
|
+
type="image/png"
|
154
|
+
sizes="16x16"
|
155
|
+
href="https://media.johnsosoka.com/old/favicons/safari-pinned-tab.png"
|
156
|
+
/>
|
157
|
+
<meta name="apple-mobile-web-app-title" content="johnsosoka.com" />
|
158
|
+
<meta name="application-name" content="johnsosoka.com" />
|
159
|
+
<meta name="msapplication-TileColor" content="#da532c" />
|
160
|
+
<meta name="theme-color" content="#2c2c2c" />
|
161
|
+
<link rel="stylesheet" href="/assets/css/bootstrap.min.css" />
|
162
|
+
<link rel="stylesheet" href="/assets/css/style.css" />
|
163
|
+
|
164
|
+
|
165
|
+
</head>
|
@@ -0,0 +1,47 @@
|
|
1
|
+
<nav class="navbar navbar-expand-lg navbar-dark bg-transparent fixed-top">
|
2
|
+
<a class="navbar-brand" href="#"></a>
|
3
|
+
<button class="navbar-toggler"
|
4
|
+
type="button" data-toggle="collapse"
|
5
|
+
data-target="#navbarNav"
|
6
|
+
aria-controls="navbarNav"
|
7
|
+
aria-expanded="false"
|
8
|
+
aria-label="Toggle navigation">
|
9
|
+
<span class="navbar-toggler-icon"></span>
|
10
|
+
</button>
|
11
|
+
<div class="collapse navbar-collapse justify-content-end" id="navbarNav">
|
12
|
+
<ul class="navbar-nav">
|
13
|
+
{%- assign url = page.url -%}
|
14
|
+
{%- assign menus = site.data.menus -%}
|
15
|
+
{%- if menus %}
|
16
|
+
{%- for menu in menus -%}
|
17
|
+
{%- if menu.subitems -%}
|
18
|
+
<li class="nav-item dropdown">
|
19
|
+
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
20
|
+
{{ menu.title }}
|
21
|
+
</a>
|
22
|
+
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
23
|
+
{%- for subitem in menu.subitems -%}
|
24
|
+
<a class="dropdown-item" href="{{ subitem.url }}">{{ subitem.title }}</a>
|
25
|
+
{%- endfor -%}
|
26
|
+
</div>
|
27
|
+
</li>
|
28
|
+
{%- else -%}
|
29
|
+
<li class="nav-item {% if url == menu.url %}active{% endif %}">
|
30
|
+
<a class="nav-link" href="{{ menu.url }}">{{ menu.title }}</a>
|
31
|
+
</li>
|
32
|
+
{%- endif -%}
|
33
|
+
{%- endfor -%}
|
34
|
+
{%- endif -%}
|
35
|
+
<li class="nav-item">
|
36
|
+
<a class="nav-link" href="/feed.xml">
|
37
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="17" height="17" viewBox="0 0 512 512" fill="#ED812E">
|
38
|
+
<title>RSS</title>
|
39
|
+
<path d="M108.56,342.78a60.34,60.34,0,1,0,60.56,60.44A60.63,60.63,0,0,0,108.56,342.78Z"/>
|
40
|
+
<path d="M48,186.67v86.55c52,0,101.94,15.39,138.67,52.11s52,86.56,52,138.67h86.66C325.33,312.44,199.67,186.67,48,186.67Z"/>
|
41
|
+
<path d="M48,48v86.56c185.25,0,329.22,144.08,329.22,329.44H464C464,234.66,277.67,48,48,48Z"/>
|
42
|
+
</svg>
|
43
|
+
</a>
|
44
|
+
</li>
|
45
|
+
</ul>
|
46
|
+
</div>
|
47
|
+
</nav>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<div class="post-navigation">
|
2
|
+
<div class="row">
|
3
|
+
<div class="col text-left">
|
4
|
+
{% if page.previous %}
|
5
|
+
<a class="post-nav-item post-nav-prev" href="{{ page.previous | relative_url }}">
|
6
|
+
<div class="nav-arrow">Previous</div>
|
7
|
+
<span class="post-title">{{ page.previous.title }}</span>
|
8
|
+
</a>
|
9
|
+
{% endif %}
|
10
|
+
</div>
|
11
|
+
<div class="col text-right">
|
12
|
+
{% if page.next %}
|
13
|
+
<a class="post-nav-item post-nav-next" href="{{ page.next | relative_url }}">
|
14
|
+
<div class="nav-arrow">Next</div>
|
15
|
+
<span class="post-title">{{ page.next.title }}</span>
|
16
|
+
</a>
|
17
|
+
{% endif %}
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
</div>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<!--
|
2
|
+
This include will display recent posts of a specified category & number..
|
3
|
+
|
4
|
+
Parameters:
|
5
|
+
- category: The category of the posts to display.
|
6
|
+
- post_display_limit: The maximum number of posts to display.
|
7
|
+
- post_collection_title: The title to display above the list of posts.
|
8
|
+
|
9
|
+
Example Usage:
|
10
|
+
{% raw %}
|
11
|
+
{% include posts.html category="blog" post_display_limit=5 post_collection_title="Recent Blog Posts" %}
|
12
|
+
{% endraw %}
|
13
|
+
|
14
|
+
The above example would display the 5 most recent posts from the 'blog' category, with the title 'Recent Blog Posts'
|
15
|
+
above the list.
|
16
|
+
|
17
|
+
-->
|
18
|
+
|
19
|
+
<div class="posts-wrapper">
|
20
|
+
<!-- <h3 class="posts-item-note" aria-label="Recent Posts">{{ include.post_collection_title }}</h3>-->
|
21
|
+
{%- for post in site.categories[include.category] limit: include.post_display_limit -%}
|
22
|
+
<article class="post-item row">
|
23
|
+
<div class="col-md-3">
|
24
|
+
<span class="post-item-date">{{ post.date | date: "%b %d, %Y" }}</span>
|
25
|
+
</div>
|
26
|
+
<div class="col-md-9">
|
27
|
+
<span class="post-item-title">
|
28
|
+
<a href="{{ post.url }}">{{ post.title | escape }}</a>
|
29
|
+
</span>
|
30
|
+
</div>
|
31
|
+
</article>
|
32
|
+
{%- endfor -%}
|
33
|
+
</div>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<!--
|
2
|
+
|
3
|
+
Scripts that are loaded throughout the website
|
4
|
+
|
5
|
+
-->
|
6
|
+
|
7
|
+
<script src="/assets/js/jquery-3.7.0.min.js" defer="defer"></script>
|
8
|
+
|
9
|
+
<script src="/assets/js/bootstrap.min.js" defer="defer"></script>
|
10
|
+
|
11
|
+
<script src="/assets/js/popper.min.js"></script>
|
12
|
+
|
13
|
+
<script src="/assets/js/bootstrap.js"></script>
|
14
|
+
|
15
|
+
<!-- TODO contact form page & move this to more local include? (it's only needed on 1 page)-->
|
16
|
+
<!--<script src="/assets/js/contact.js"></script>-->
|
data/_includes/tags.html
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
<div class="archive-tags">
|
2
|
+
<a class="tag-item" href="#">all</a>
|
3
|
+
{%- for tag in site.tags -%}
|
4
|
+
{% capture name %}{{ tag | first }}{% endcapture %}
|
5
|
+
<a class="tag-item" href="#{{name}}">{{ name }}</a>
|
6
|
+
{%- endfor -%}
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<!-- TODO Dates / Titles aren't aligned -->
|
10
|
+
|
11
|
+
{%- for tag in site.tags -%}
|
12
|
+
{%- capture name -%}{{ tag | first }}{%- endcapture -%}
|
13
|
+
<h2 id="{{ name }}">{{ name | upcase }}</h2>
|
14
|
+
{%- for post in site.tags[name] -%}
|
15
|
+
<article class="post-item" id="results-container">
|
16
|
+
<span class="post-item-date">{{ post.date | date: "%b %d, %Y" }}</span>
|
17
|
+
<h3 class="post-item-title">
|
18
|
+
<a href="{{ post.url }}">{{ post.title | escape }}</a>
|
19
|
+
</h3>
|
20
|
+
</article>
|
21
|
+
{%- endfor -%}
|
22
|
+
{%- endfor -%}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<div class="posts-wrapper">
|
2
|
+
{%- for post in site.posts -%}
|
3
|
+
{%- capture current_year -%}{{ post.date | date: "%Y" }}{%- endcapture -%}
|
4
|
+
{%- unless current_year == previous_year -%}
|
5
|
+
<h1 class="posts-item-note" aria-label="Posts from {{ current_year }}">{{ current_year }}</h1>
|
6
|
+
{%- assign previous_year = current_year -%}
|
7
|
+
{%- endunless -%}
|
8
|
+
<article class="post-item row">
|
9
|
+
<div class="col-md-3">
|
10
|
+
<span class="post-item-date">{{ post.date | date: "%b %d, %Y" }}</span>
|
11
|
+
</div>
|
12
|
+
<div class="col-md-9">
|
13
|
+
<span class="post-item-title">
|
14
|
+
<a href="{{ post.url }}">{{ post.title | escape }}</a>
|
15
|
+
</span>
|
16
|
+
</div>
|
17
|
+
</article>
|
18
|
+
{%- endfor -%}
|
19
|
+
</div>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
---
|
2
|
+
---
|
3
|
+
<!DOCTYPE html>
|
4
|
+
<html lang="{{ page.lang | default: site.lang | default: en }}" class="wrapper-2">
|
5
|
+
<head>
|
6
|
+
<meta charset="UTF-8">
|
7
|
+
<title>{{ page.title }}</title>
|
8
|
+
</head>
|
9
|
+
{% include header.html %}
|
10
|
+
<body>
|
11
|
+
<!-- Shared/Common Styles -->
|
12
|
+
<div class="container">
|
13
|
+
<header class="header row justify-content-center">
|
14
|
+
<div class="col-lg-8">
|
15
|
+
<!-- Site Navigation -->
|
16
|
+
{% include navbar.html %}
|
17
|
+
</div>
|
18
|
+
</header>
|
19
|
+
|
20
|
+
<main class="body row justify-content-center flex-grow-1">
|
21
|
+
<div class="col-lg-8">
|
22
|
+
<!-- Page Content -->
|
23
|
+
{{ content }}
|
24
|
+
</div>
|
25
|
+
</main>
|
26
|
+
|
27
|
+
<footer class="footer row justify-content-center">
|
28
|
+
<div class="col-lg-8">
|
29
|
+
<!-- Footer content -->
|
30
|
+
{% include footer.html %}
|
31
|
+
</div>
|
32
|
+
</footer>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<!-- Shared/Common Scripts -->
|
36
|
+
{% include scripts.html %}
|
37
|
+
</body>
|
38
|
+
</html>
|
data/_layouts/home.html
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
|
5
|
+
<div class="wrapper home">
|
6
|
+
<main class="page-content d-flex justify-content-center align-items-center" aria-label="Content">
|
7
|
+
<div class="text-left">
|
8
|
+
{% include john_landing.html %}
|
9
|
+
{{ content }}
|
10
|
+
</div>
|
11
|
+
</main>
|
12
|
+
</div>
|
13
|
+
|
data/_layouts/lore.html
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
|
5
|
+
<body class="notransition">
|
6
|
+
<div class="wrapper">
|
7
|
+
<header class="header">
|
8
|
+
<h1 class="header-title center" itemprop="headline">{{ page.title | escape }}.</h1>
|
9
|
+
</header>
|
10
|
+
<main class="page-content" aria-label="Content">
|
11
|
+
{{ content }}
|
12
|
+
<script>
|
13
|
+
document.write('<a href="' + document.referrer + '">{{ site.lore_go_back_text }}</a>');
|
14
|
+
</script>
|
15
|
+
</main>
|
16
|
+
|
17
|
+
</div>
|
18
|
+
</body>
|
19
|
+
|
data/_layouts/page.html
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
|
5
|
+
<body class="notransition">
|
6
|
+
|
7
|
+
<div class="wrapper page">
|
8
|
+
<header class="header">
|
9
|
+
<h1 class="header-title center" itemprop="headline">{{ page.title | escape }}.</h1>
|
10
|
+
</header>
|
11
|
+
<main class="flex-grow-1 page-content" aria-label="Content">
|
12
|
+
{{ content }}
|
13
|
+
</main>
|
14
|
+
</div>
|
15
|
+
</body>
|
data/_layouts/post.html
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
|
5
|
+
<body class="notransition">
|
6
|
+
|
7
|
+
<div class="wrapper post">
|
8
|
+
<header class="header">
|
9
|
+
{% if page.tags and page.tags != empty %}
|
10
|
+
<div class="tags">
|
11
|
+
{% assign tags = page.tags %}
|
12
|
+
<span itemprop="keywords">
|
13
|
+
{% for tag in tags %}
|
14
|
+
<a class="tag"
|
15
|
+
href="/tags/#{{tag | downcase | slugify}}">{{tag | upcase }}</a>{% unless forloop.last %},{% endunless %}
|
16
|
+
{% endfor %}
|
17
|
+
</span>
|
18
|
+
</div>
|
19
|
+
{% endif %}
|
20
|
+
<h1 class="header-title text-left display-12" itemprop="headline">{{ page.title | escape }}.</h1>
|
21
|
+
</header>
|
22
|
+
|
23
|
+
<div class="header-subtitle">
|
24
|
+
<div class="row">
|
25
|
+
<div class="col text-right">
|
26
|
+
<span itemprop="author" itemscope itemtype="https://schema.org/Person">
|
27
|
+
<span itemprop="name">{{ site.author.name }}</span>
|
28
|
+
</span>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
<div class="row">
|
32
|
+
<div class="col text-right">
|
33
|
+
<span itemprop="publishDate" datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">
|
34
|
+
{{ page.date | date: "%b %d, %Y" }}
|
35
|
+
</span>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
|
40
|
+
<main class="flex-grow-1 page-content" aria-label="Content">
|
41
|
+
{{ content }}
|
42
|
+
</main>
|
43
|
+
|
44
|
+
|
45
|
+
</div>
|
46
|
+
{% include post_navigation.html %}
|
47
|
+
</body>
|
48
|
+
|