jekyll-theme-endless 0.12.4 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3f75db2a0eaa28c18488f7bfddead9281c786ed050769c4a9f1593e344ff7be7
4
- data.tar.gz: e854ce0f88a84f58a9076835ecf89bbdfd59b071993c0e02e11c43ca71baf202
3
+ metadata.gz: a42aa548152db990d7bac3ebff1b3f4dc93e9d370b0463ebb4161171cb860725
4
+ data.tar.gz: 9a094c358ff5c9bf680e507d995a8cd50bfa3f1397b37119aa3a13d2db0ae0b7
5
5
  SHA512:
6
- metadata.gz: 9acdb37b0ec27f4da113e109259b576dc8f5bb014544c275890237d300db51e202d2579b325cd9dfe0cdc3a60f7bf2247f1dab2baadde193d630d18faa78d3a0
7
- data.tar.gz: f4a0d1445f90e848b0e7cb9e3cb21c18491bd0eb357d447b1e1ccfcca80c05fe7ba795a54db9525ad3b9d70dc47f97cea1273170354b54a4506d2a10babdf4db
6
+ metadata.gz: c8fa43b769dab8d11603e54078ea7d297ae48bf3a362120f29e31cab44f0d6a81c273876251ad30dce6cd568f665be3b94a3146dc8939087ba758d19e0726491
7
+ data.tar.gz: f562c0c1e7890b32f3f7f2a88ff414b6a2fa28363da60ae21273355e5fd833c858d05159606f1d150869ac48af234b952245bdc84e7049d634be0998b05a0b9e
data/README.adoc CHANGED
@@ -226,7 +226,63 @@ Content
226
226
 
227
227
 
228
228
  `_layouts/page-postlist.html`::
229
- Layout of page-content with a list of blog posts at the end.
229
+ +
230
+ --
231
+ The page-postlist layout is designed to add a list of blog posts at the end of any page that uses this layout.
232
+ The post list can currently be *configured* using two values via Jekyll frontmatter or page variables:
233
+
234
+ `page-postlist-css-class`:
235
+ This specifies the CSS class for the <ul> element where the posts will be listed, allowing for different list styles.
236
+
237
+ `page-postlist-format-function`:
238
+ This specifies the code to be included for generating the HTML structure of each post in the list.
239
+ Currently, two designs are available
240
+ (`_includes/function_post-in-list-short.html` [view link:/postlist-short/[postlist using the 'short design']]
241
+ and `_includes/function_post-in-list-long.html` [view link:/postlist-long/[postlist using the 'long design']]), but you can create your own custom formats.
242
+
243
+ To set the values, simply add them as front matter or page variables.
244
+ For front matter (e.g., in Markdown pages, layouts, or even AsciiDoc pages), it might look like this:
245
+
246
+ [source, markdown]
247
+ ----
248
+ ---
249
+ # Layout that attaches blog posts to the end of the page-content.
250
+ layout: page-postlist
251
+ menu_position: 500
252
+ page-menu_label: Blog
253
+ summary: "150 character description of the page."
254
+ ## Configuration of the postlist layout (page-postlist.html):
255
+ postlist-css-class: "post-list-long"
256
+ postlist-format-function: "function_post-in-list-long.html"
257
+ ---
258
+ # Page title
259
+
260
+ Content
261
+ ----
262
+
263
+ For AsciiDoc pages, you can also set it as a page variable:
264
+
265
+ [source, asciidoc]
266
+ ----
267
+ = Page title
268
+ // Layout that attaches blog posts to the end of the page-content.
269
+ :page-layout: page-postlist
270
+ :page-menu_position: 500
271
+ :page-menu_label: Blog
272
+ :page-summary: "150 character description of the page."
273
+ // Configuration of the postlist layout (page-postlist.html):
274
+ :page-postlist-css-class: "post-list-short"
275
+ :page-postlist-format-function: "function_post-in-list-short.html"
276
+
277
+ Content
278
+ ----
279
+
280
+ IMPORTANT: If you want to set the values for `page-tag.html`
281
+ (the layout used by the plugin to create the tag pages),
282
+ then the configuration must be done directly in that file,
283
+ even if the layout `page-postlist` is defined in a downstream layout like `page-tag-template`.
284
+
285
+ --
230
286
 
231
287
 
232
288
 
@@ -343,6 +399,14 @@ without having to rewrite a complete layout file.
343
399
 
344
400
 
345
401
 
402
+ `_includes/container_head-of-document.html`::
403
+
404
+ An empty file that can be overwritten by the theme user to _add content to the header of the HTML document_.
405
+ It is included directly after the `<link>` commands for libraries and before the `<link>` command for `main.css`.
406
+ This allows you to add libraries and modify settings in `main.css` as needed.
407
+
408
+
409
+
346
410
  `_includes/container_start-of-main.html`::
347
411
 
348
412
  The content of this file is inserted *above* the main content area (the section containing the page content and blog navigation). The content should be wrapped in a `<div>` element.
@@ -403,6 +467,13 @@ Generates a list containing blog posts.
403
467
 
404
468
 
405
469
 
470
+ `_includes/function_post-in-list-long.html`::
471
+ Generates the code to display a single post in the list of blog posts.
472
+ An entry consists of the title of the blog post )linked to the article),
473
+ a summary, the creation date and a list of tags associates with the post.
474
+
475
+
476
+
406
477
  `_includes/function_post-in-list-short.html`::
407
478
  Generates the code to display a single post in the list of blog posts.
408
479
  An entry consists of the title of the blog post linked to the article.
data/_config.yml CHANGED
@@ -96,6 +96,17 @@ exclude:
96
96
 
97
97
 
98
98
 
99
+ # compressed: Produces minified CSS in a single line, with no spaces or comments, for the smallest file size.
100
+ # expanded: Outputs fully expanded CSS with indentation, making it easy to read but larger in size.
101
+ # nested: Generates CSS with nested indentation, resembling the structure of the Sass code, for improved readability.
102
+ # compact: Outputs CSS in a compact format, placing each selector on a new line, reducing file size while maintaining some readability.
103
+ sass:
104
+ style: compressed
105
+
106
+
107
+
108
+
109
+
99
110
  # Settings for: jekyll-theme-endless
100
111
  ###############################################################################
101
112
  # These settings have been outsourced into the file `_data.yml` in this project.
@@ -0,0 +1,12 @@
1
+ {% comment %}
2
+ This file is intended to be replaced with user content.
3
+
4
+ It can be overwritten by the theme user to add content to the header of the HTML document
5
+ (such as adding CSS libraries within the <head>) without having to rewrite an entire layout file.
6
+
7
+ The file is included directly after the <link> commands for libraries and
8
+ before the <link> command for the main.css.
9
+ This allows you to add libraries and adjust settings in the main.css file.
10
+
11
+ {% endcomment %}
12
+
@@ -5,15 +5,23 @@ Expects an array of post objects in the parameter `postlist`.
5
5
  Call via:
6
6
  ----
7
7
  {% include function_list-posts.html
8
- postlist=POSTLIST
8
+ postlist = POSTLIST
9
+ postlist-css-class = page.postlist-css-class
10
+ postlist-format-function = page.postlist-format-function
9
11
  %}
10
12
  ----
11
13
  {% endcomment %}
12
14
 
13
- <ul>
15
+ {% comment %}
16
+ Set the default values for the format function an the CSS-class.
17
+ {% endcomment %}
18
+ {% assign design_post = include.postlist-format-function | default: "function_post-in-list-short.html" %}
19
+ {% assign design_class = include.postlist-css-class | default: "post-list-short" %}
20
+
21
+ <ul class="{{ design_class }}" itemscope itemtype="https://schema.org/Blog">
14
22
  {% for current_post in include.postlist %}
15
- <li>
16
- {% include function_post-in-list-short.html
23
+ <li itemscope itemtype="https://schema.org/BlogPosting">
24
+ {% include {{ design_post }}
17
25
  post = current_post
18
26
  %}
19
27
  </li>
@@ -0,0 +1,49 @@
1
+ {% comment %}
2
+ Processes a single post for display in the list of articles.
3
+ Expects a post object as a parameter.
4
+
5
+ Call via:
6
+ ----
7
+ <li>
8
+ {% include function_post-in-list-short.html
9
+ post=current_post
10
+ %}
11
+ </li>
12
+ ----
13
+ {% endcomment %}
14
+
15
+
16
+ {% assign post = include.post %}
17
+
18
+ <h2 itemprop="headline">
19
+ <a href="{{ post.url }}" itemprop="url">{{ post.title }}</a>
20
+ </h2>
21
+ <div>
22
+ {% comment %}
23
+ post.summary is checked first.
24
+ If summary is available, it is used directly without any modifications.
25
+
26
+ If summary is not available, excerpt is used as a fallback.
27
+ The strip_html filter removes any HTML tags from excerpt,
28
+ ensuring that only plain text is displayed.
29
+ {% endcomment %}
30
+ <p class="summary" itemprop="description">{{ post.summary | default: post.excerpt | strip_html }}</p>
31
+ <p>
32
+ {% include function_show-dates.html
33
+ created = post.date
34
+ edited = post.last_modified_at
35
+ %}
36
+ </p>
37
+ <p>
38
+ {% comment %}Show tags of the post.{% endcomment %}
39
+ {% include function_tag-list.html
40
+ tags=post.tags
41
+ %}
42
+ </p>
43
+
44
+ {% comment %}
45
+ <meta itemprop="author" content="Author(s)" />
46
+ <meta itemprop="publisher" content="Brandname of Blogname" />
47
+ {% endcomment %}
48
+
49
+ </div>
@@ -14,15 +14,20 @@ Call via:
14
14
 
15
15
 
16
16
  {% assign post = include.post %}
17
+ <time itemprop="datePublished" datetime="{{ post.date | date: '%Y-%m-%d' }}">
18
+ {{ post.date | date: '%Y-%m-%d' }}
19
+ </time>:
17
20
 
18
- {{ post.date | date: "%Y-%m-%d" }}:
19
21
  {% if post.permalink %}
20
22
  {% comment %}
21
23
  I use permalinks to indicate that an article was at some point considered beeing finished.
22
24
  {% endcomment %}
23
25
  <i class="fa fa-link text-success" title="This article has a permalink."></i>
24
26
  {% endif %}
27
+
25
28
  {% comment %}
26
29
  'title' is not escaped, as the value should already be escaped by AsciiDoc through asciidocify.
27
30
  {% endcomment %}
28
- <a href="{{ post.url | relative_url }}">{{ post.title }}</a>
31
+ <a href="{{ post.url | relative_url }}" itemprop="url">
32
+ <span itemprop="headline">{{ post.title }}</span>
33
+ </a>
@@ -1,16 +1,12 @@
1
- <div class="text-right">
1
+ <time class="created" datetime="{{ include.created | date_to_xmlschema }}" itemprop="datePublished">
2
+ <span class="sr-only sr-only-focusable">created:</span>
3
+ <strong title="date of creation">{{ include.created | date: "%b %-d, %Y" }}</strong>
4
+ </time>
2
5
 
3
- <time class="created" datetime="{{ include.created | date_to_xmlschema }}" itemprop="datePublished">
4
- <span class="sr-only sr-only-focusable">created:</span>
5
- <strong title="date of creation">{{ include.created | date: "%b %-d, %Y" }}</strong>
6
- </time>
7
-
8
- {% if include.edited != "" and include.edited %}
9
- /
10
- <time class="edited" datetime="{{ include.edited | date_to_xmlschema }}" itemprop="dateModified">
11
- <span class="sr-only sr-only-focusable">edited:</span>
12
- <strong title="date of last edit">{{ include.edited | date: "%b %-d, %Y" }}</strong>
13
- </time>
14
- {% endif %}
15
-
16
- </div>
6
+ {% if include.edited != "" and include.edited %}
7
+ /
8
+ <time class="edited" datetime="{{ include.edited | date_to_xmlschema }}" itemprop="dateModified">
9
+ <span class="sr-only sr-only-focusable">edited:</span>
10
+ <strong title="date of last edit">{{ include.edited | date: "%b %-d, %Y" }}</strong>
11
+ </time>
12
+ {% endif %}
@@ -0,0 +1,15 @@
1
+ ---
2
+ # Page without navigation, footer, etc.
3
+ # Can be used for simple confirmation pages or similar, which should have a layout consistent with the main site.
4
+ layout: html
5
+ ---
6
+ <main class="container" aria-label="Content">
7
+ <div class="row">
8
+
9
+ <div class="col-lg-12">
10
+ {{ content }}
11
+ </div>
12
+
13
+ </div>
14
+
15
+ </main>
data/_layouts/html.html CHANGED
@@ -37,6 +37,8 @@
37
37
  <!-- Load local versions -->
38
38
  {% endif %}
39
39
 
40
+ {% include container_head-of-document.html %}
41
+
40
42
  <!-- Theme CSS -->
41
43
  <link rel="stylesheet" href="{{ '/assets/css/main.css' | relative_url }}">
42
44
 
@@ -0,0 +1,17 @@
1
+ ---
2
+ # Page without navigation, footer, etc., with a "close window" link
3
+ # Can be used for simple confirmation pages or similar, which should maintain a layout consistent with the main site.
4
+ layout: default-minimal
5
+ ---
6
+ <section class="detached">
7
+
8
+ {% comment %}
9
+ 'title' is not escaped, as the value should already be escaped by AsciiDoc through asciidocify.
10
+ {% endcomment %}
11
+ <h1 class="post-title">{{ page.title }}</h1>
12
+
13
+ {{ content }}
14
+
15
+ <p class="text-center"><a href="#" onClick="window.close()">Close window.</a></p>
16
+
17
+ </section>
@@ -4,8 +4,53 @@ layout: page
4
4
  ---
5
5
  {{ content }}
6
6
 
7
+ {% comment %}
8
+ The page-postlist layout is designed to add a list of blog posts at the end of any page that uses this layout.
9
+ The post list can currently be configured using two values via Jekyll frontmatter or page variables:
10
+
11
+ page-postlist-css-class:
12
+ This specifies the CSS class for the <ul> element where the posts will be listed, allowing for different list styles.
13
+
14
+ page-postlist-format-function:
15
+ This specifies the code to be included for generating the HTML structure of each post in the list.
16
+ Currently, two designs are available, but you can create your own custom formats.
17
+
18
+ Planned features:
19
+
20
+ page-postlist-sort-by:
21
+ Determines the sorting method for the post list, e.g., by title (natural title), creation date, or last edit date.
22
+ The page-postlist layout will handle the sorting.
23
+
24
+ page-postlist-sort-order:
25
+ Specifies the sorting direction, either ascending or descending.
26
+
27
+ Processed data:
28
+
29
+ page-postlist
30
+ This variable holds the post list itself (default is all posts—i.e., site.posts).
31
+ You can also pass a subset, such as only posts with a specific tag or posts created in a particular year.
32
+ page-postlist can, for example, be set by the tag page plugin.
33
+ Setting the variable within layouts does not seem possible because:
34
+ * Page variables cannot be created or modified through Liquid.
35
+ * Only static values can be assigned to a variable in front matter.
36
+
37
+ {% endcomment %}
38
+
39
+ {% comment %}
40
+ The default value for the postlist is the list of all posts (i.e., site.posts),
41
+ or otherwise, the value provided for page.postlist (e.g., only posts tagged with a specific tag).
42
+ {% endcomment %}
43
+ {% assign postlist = page.postlist | default: site.posts %}
44
+
45
+ {% comment %}
46
+ Perform the sorting.
47
+ This part is not yet implemented.
48
+ {% endcomment %}
49
+
7
50
  {% include function_list-posts.html
8
- postlist=site.posts
51
+ postlist = postlist
52
+ postlist-css-class = page.postlist-css-class
53
+ postlist-format-function = page.postlist-format-function
9
54
  %}
10
55
 
11
56
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- layout: page
2
+ layout: page-postlist
3
3
  menu_position: -10
4
4
  ---
5
5
  {% comment %}
@@ -25,10 +25,6 @@ page.tag and page.title are set by the plugin `generate-taglist`.
25
25
  that were already escaped by AsciiDocify, or, if special characters are present,
26
26
  the tags were set unescaped through the Jekyll front matter.
27
27
  {% endcomment %}
28
- Number of posts tagged with "<em>{{ page.tag | escape }}</em>": <strong>{{ site.tags[ page.tag ] | size }}</strong>
28
+ Number of posts tagged with "<em>{{ page.tag | escape }}</em>": <strong>{{ site.tags[ page.tag ] | size }}</strong>
29
29
  </p>
30
30
 
31
- {% assign tag_posts = site.tags[page.tag] %}
32
- {% include function_list-posts.html
33
- postlist=tag_posts
34
- %}
@@ -1,5 +1,10 @@
1
1
  ---
2
2
  layout: page-tag-template
3
3
  menu_position: -10
4
+ ## Configuration of the postlist layout (page-postlist.html):
5
+ postlist-css-class: "post-list-long"
6
+ postlist-format-function: "function_post-in-list-long.html"
7
+ #postlist-sort-by:
8
+ #postlist-sort-order:
4
9
  ---
5
10
 
data/_layouts/post.html CHANGED
@@ -17,10 +17,12 @@ layout: default
17
17
  {% comment %}
18
18
  Show dates of the post.
19
19
  {% endcomment %}
20
- {% include function_show-dates.html
21
- created = page.date
22
- edited = edited_date
23
- %}
20
+ <div class="text-right">
21
+ {% include function_show-dates.html
22
+ created = page.date
23
+ edited = edited_date
24
+ %}
25
+ </div>
24
26
 
25
27
  {% comment %}
26
28
  In Markdown posts, page.title defaults to parts of the filename.
@@ -3,6 +3,7 @@ div.admonitionblock {
3
3
  box-shadow: 0 1px 4px #aaa;
4
4
  background: #fff;
5
5
  color: #111;
6
+ margin: 2em 0;
6
7
  }
7
8
  .admonitionblock table {
8
9
  background-color: transparent;
@@ -21,10 +22,10 @@ span.icon>.fa {
21
22
  .admonitionblock td.icon {
22
23
  text-align: center;
23
24
  vertical-align: top;
24
- width: 66px;
25
+ width: 3.7em;
25
26
 
26
27
  [class^="fa icon-"] {
27
- font-size: 1.5em;
28
+ font-size: 2.3em;
28
29
  text-shadow: 1px 1px 2px rgba(0,0,0,.5);
29
30
  cursor: default;
30
31
  }
data/_sass/adoc-code.scss CHANGED
@@ -1,28 +1,34 @@
1
1
  /**
2
2
  * Show name of the language highlighted in a code block in the upper right corner.
3
3
  */
4
- .listingblock .content code {
5
- position: relative;
6
- display: block;
7
- }
8
-
9
- .listingblock .content code::before {
10
- content: attr(data-lang);
11
- position: absolute;
12
- top: 0;
13
- right: 0;
14
- background-color: #f0f0f0;
15
- padding: 2px 5px;
16
- font-size: 12px;
17
- color: #333;
18
- border-radius: 3px;
19
- border: 1px solid #ccc;
20
- }
21
-
22
- /* If data-lang is empty or not set, ::before will be hidden. */
23
- .listingblock .content code[data-lang=""]::before,
24
- .listingblock .content code:not([data-lang])::before {
25
- display: none;
4
+ .listingblock {
5
+
6
+ .content {
7
+
8
+ code {
9
+ position: relative;
10
+ display: block;
11
+ }
12
+
13
+ code::before {
14
+ content: attr(data-lang);
15
+ position: absolute;
16
+ top: 0;
17
+ right: 0;
18
+ background-color: #f0f0f0;
19
+ padding: 2px 5px;
20
+ font-size: 12px;
21
+ color: #333;
22
+ border-radius: 3px;
23
+ border: 1px solid #ccc;
24
+ }
25
+
26
+ /* If data-lang is empty or not set, ::before will be hidden. */
27
+ code[data-lang=""]::before,
28
+ code:not([data-lang])::before {
29
+ display: none;
30
+ }
31
+ }
26
32
  }
27
33
 
28
34
  /*
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Designs for the post-lists.
3
+ */
4
+
5
+ ul.post-list-short {
6
+ margin-left: 0;
7
+ }
8
+
9
+ ul.post-list-long {
10
+
11
+ list-style: none;
12
+ padding: 0;
13
+ margin: 0;
14
+
15
+ li {
16
+ margin-bottom: 20px;
17
+
18
+ h2 {
19
+ margin-left: .25em;
20
+ font-size: 1.7em;
21
+ }
22
+
23
+ p.summary {
24
+ margin-bottom: 1.5em;
25
+ }
26
+
27
+ div {
28
+ position: relative;
29
+ margin-left: 3em;
30
+ padding: .5em 0;
31
+
32
+ // Blurred bar on the left side of the div
33
+ &::before {
34
+ content: '';
35
+ position: absolute;
36
+ left: -2em;
37
+ top: 0;
38
+ bottom: 0;
39
+ width: 1em;
40
+ background-color: rgba(0, 0, 111, 0.1);
41
+ filter: blur(3px);
42
+ border-radius: 5px;
43
+ }
44
+ }
45
+ }
46
+ }
data/_sass/structure.scss CHANGED
@@ -7,6 +7,13 @@ article, section {
7
7
  }
8
8
  }
9
9
 
10
+ /**
11
+ * Design settings for page-minimal.
12
+ */
13
+ section.detached {
14
+ margin-top: 1em;
15
+ }
16
+
10
17
  /*
11
18
  * Main elements (boxes for content):
12
19
  * * <section> for pages
data/assets/css/main.scss CHANGED
@@ -12,6 +12,7 @@
12
12
  @use "address";
13
13
  @use "tag-cloud";
14
14
  @use "posts";
15
+ @use "postlists";
15
16
  @use "structure";
16
17
 
17
18
  /*
@@ -84,6 +84,10 @@ module Jekyll
84
84
  # Makes `page.tag` available in the layout file
85
85
  self.data['tag'] = tag
86
86
 
87
+ # Make `site.tags[tag]` available as `page.postlist` in the layout
88
+ self.data['postlist'] = site.tags[tag] || []
89
+
90
+ #puts "[DEBUG] Loaded self.data: #{self.data.inspect}"
87
91
  end
88
92
  end
89
93
 
@@ -1,5 +1,5 @@
1
1
  module Jekyll
2
2
  module Endless
3
- VERSION = '0.12.4'
3
+ VERSION = '0.13.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-theme-endless
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.4
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sven Boekhoff
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-01 00:00:00.000000000 Z
11
+ date: 2024-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll-asciidoc
@@ -84,6 +84,7 @@ files:
84
84
  - _includes/container_end-of-main.html
85
85
  - _includes/container_end-of-page.html
86
86
  - _includes/container_end-of-post.html
87
+ - _includes/container_head-of-document.html
87
88
  - _includes/container_start-of-main.html
88
89
  - _includes/container_start-of-page.html
89
90
  - _includes/container_start-of-post.html
@@ -91,13 +92,16 @@ files:
91
92
  - _includes/content_footer-usernames.html
92
93
  - _includes/function_list-pages.html
93
94
  - _includes/function_list-posts.html
95
+ - _includes/function_post-in-list-long.html
94
96
  - _includes/function_post-in-list-short.html
95
97
  - _includes/function_show-dates.html
96
98
  - _includes/function_show-prev-next-navigation.html
97
99
  - _includes/function_tag-cloud.html
98
100
  - _includes/function_tag-list.html
101
+ - _layouts/default-minimal.html
99
102
  - _layouts/default.html
100
103
  - _layouts/html.html
104
+ - _layouts/page-minimal.html
101
105
  - _layouts/page-postlist.html
102
106
  - _layouts/page-tag-template.html
103
107
  - _layouts/page-tag.html
@@ -118,6 +122,7 @@ files:
118
122
  - _sass/md-lists.scss
119
123
  - _sass/md-quote.scss
120
124
  - _sass/md-tables.scss
125
+ - _sass/postlists.scss
121
126
  - _sass/posts.scss
122
127
  - _sass/rouge-highlight.scss
123
128
  - _sass/structure.scss