linaro-jekyll-theme 4.0.1 → 4.1.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 79390c1da8c7f4b44b28d9bdc09a46d3d5523a24693ada36fb1ce3b24679b0f8
4
- data.tar.gz: de85d8ca76ae47c47020800f0b5af8f62fb3e47a1ab8692efce33251a654d532
3
+ metadata.gz: ef6489380550d1c690df6d633c0b4868a650be15e5ee048df5c093f3d95b291e
4
+ data.tar.gz: aa3cf5554a177b41b683d8465bfc369510aaf10117fbf8585dfd8e9ad3c41887
5
5
  SHA512:
6
- metadata.gz: 0aefad34a92479c04c48cca0f1371a7189fe45bbc7c008749d3cbb88b1f9a7e84a0f8b4fc2b54b91eb72c0fc8a9565d4fc5a4d7cff5746fac37e8caa88f8b4fe
7
- data.tar.gz: 463d52006a9da9245a15b48b204add3225b05a4971e46551b8a0d8fe2b07717c61c1ff79a748774d13e6f9c833c4a979f028ac31c8d288e3ba80ca3ab918c4af
6
+ metadata.gz: d7b3181a0e782ed535252098ecbc6152bd702d09a69a39b97206288807f319bba0510c379cd8615703a2e8eb8731f4a6fb4f82fcdbd66635a07c05f431c9c6a9
7
+ data.tar.gz: 14efb7cb06a90c6d7c87bf21e375053a924f3e6807dea78d786e047d1ec5384cb9f4431bf0e6d7910567cf7dc55ec6e0626c572ba989f9e0d00f4b52505d1591
@@ -4,7 +4,7 @@ baseurl: ""
4
4
  description: |-
5
5
  The linaro-jekyll-theme is an advanced enterprise ready Jekyll theme used across the Linaro static websites.
6
6
  destination: _site
7
- permalink: /blog/:title/
7
+ permalink: /:categories/:title/
8
8
  theme: linaro-jekyll-theme
9
9
  highlighter: rouge
10
10
  markdown: kramdown
@@ -51,6 +51,7 @@ defaults:
51
51
  layout: post
52
52
  is_post: true
53
53
  comments: true
54
+ tags_enabled: true
54
55
  strap_image: /assets/images/breadcrumb-image.jpg
55
56
  - scope:
56
57
  path: ""
@@ -61,6 +62,8 @@ include: ["_pages"]
61
62
  # ----------- THEME / WEBSITE CONFIG ---------------------
62
63
  # Blog images/thumbs dir
63
64
  blog_images_dir: assets/images/content/
65
+ # Blog Tag limit
66
+ tag_limit: 10
64
67
  # The default number of posts to display on a given post index page
65
68
  # used in the _includes/blog/display_latest_posts.html include
66
69
  post_limit: 10
@@ -133,7 +136,7 @@ disqus:
133
136
  # Edit on GitHub Settings
134
137
  edit-on-github:
135
138
  enabled: true
136
- repo: https://www.github.com/linaro-marketing/jumbo-jekyll-theme
139
+ repo: https://www.github.com/linaro-marketing/linaro-jekyll-theme
137
140
  # docs: https://www.github.com/Linaro/website
138
141
  # Page breadcrumb schema - https://schema.org/BreadcrumbList
139
142
  breadcrumb_schema: true
@@ -2,30 +2,12 @@
2
2
  copyright_text: Linaro Limited
3
3
  # Set this to false if you do not want the Linaro logo in the footer.
4
4
  footer_brand:
5
- logo: /assets/images/Linaro-logo-white.png
6
- # Social Media Icons Row
7
- social_media_icons: true
8
- # Contact Info
9
- display_contact_details: true
5
+ url: https://www.linaro.org
6
+ alt: Linaro Logo
7
+ path: /assets/images/Linaro-logo-white.png
10
8
  # These links are displayed at the very bottom of the footer.
11
9
  company_links:
12
- - name: Legal
13
- url: /legal/
14
- - name: Contact
15
- url: /contact/
16
- middle_column:
17
- title: Latest News & Blogs
18
- latest_posts: true
19
- third_column:
20
- title: Other Projects
21
- items:
22
- - name: 96Boards
23
- url: https://www.96boards.org
24
- - name: Linaro Connect
25
- url: https://connect.linaro.org
26
- - name: DeviceTree
27
- url: https://www.devicetree.org
28
- - name: OP-TEE
29
- url: https://www.op-tee.org
30
- - name: Linaro Developer Cloud
31
- url: https://www.linaro.cloud
10
+ - name: Legal
11
+ url: /legal/
12
+ - name: Contact
13
+ url: /contact/
@@ -53,11 +53,19 @@
53
53
  </div>
54
54
  <h5 class="card-title">{{post.title}}</h5>
55
55
  <h6 class="card-subtitle mb-2 text-muted">{{ post.date | date: "%A, %B %-d, %Y"}}</h6>
56
+ {% if page.tags_enabled %}
57
+ {% assign post_tags = post.tags | sort %}
58
+ {% for tag in post_tags limit: site.tag_limit %}
59
+ <a class="btn bg-light text-dark btn-sm my-1" href="/{{post.category | downcase}}/tags/?tag={{tag}}">
60
+ {{tag}}
61
+ </a>
62
+ {% endfor %}
63
+ {% endif %}
56
64
  <p class="card-text">
57
65
  {% if post.description %}
58
- {{post.description}}
66
+ {{post.description | truncate: 184 }}
59
67
  {% else %}
60
- {{ post.content | strip_html | truncatewords:30 }}
68
+ {{ post.content | strip_html | truncate: 184 }}
61
69
  {% endif %}
62
70
  </p>
63
71
  <p class="card-text">
@@ -70,9 +78,9 @@
70
78
  </div>
71
79
  {% else %}
72
80
 
73
- <div class="col col-12 col-sm-6 col-lg-4 blog-post-item-col p-3">
74
- <a href="{{post.url}}">
75
- <div class="card h-100 ">
81
+ <div class="col col-12 col-sm-6 col-lg-4 blog-post-item-col p-3">
82
+ <div class="card h-100 ">
83
+ <a class="wrapper_link" href="{{post.url}}"></a>
76
84
  <div class="blog_image_header">
77
85
  {% if post.image %}
78
86
  {% assign block_image = post.image %}
@@ -83,8 +91,7 @@
83
91
  {% endif %}
84
92
  {% picture featured_blog_image {{block_image}} --alt {{block_image_alt}} %}
85
93
  </div>
86
- <div class="card-body">
87
-
94
+ <div class="card-body d-flex flex-column">
88
95
  {% assign author = site.authors | where: "username", post.author | first %}
89
96
  {% assign author-url = author.url %}
90
97
  {% if author.image %}
@@ -109,10 +116,19 @@
109
116
  {{ post.content | strip_html | truncatewords:30 }}
110
117
  {% endif %}
111
118
  </p>
119
+ {% if page.tags_enabled %}
120
+ {% assign post_tags = post.tags | sort %}
121
+ <div class="d-block mt-auto">
122
+ {% for tag in post_tags limit: site.tag_limit %}
123
+ <a class="btn bg-light text-dark btn-sm my-1" href="/{{post.category | downcase}}/tags/?tag={{tag}}">
124
+ {{tag}}
125
+ </a>
126
+ {% endfor %}
127
+ </div>
128
+ {% endif %}
112
129
  </div>
113
130
  </div>
114
- </a>
115
-
131
+
116
132
  </div>
117
133
  {% endif %}
118
134
  {% endfor %}
@@ -4,4 +4,4 @@
4
4
  {% else %}
5
5
  {% assign words = content | number_of_words %}
6
6
  {% endif %}
7
- <span class="reading-time badge badge-light text-dark" title="Estimated read time">{% if words < 360 %}1 min read{% else %}{{ words | divided_by:180 }} mins read{% endif %} <i class="fa fa-clock-o" aria-hidden="true"></i></span>
7
+ <span class="align-self-start my-1 reading-time bg-light text-dark badge" title="Estimated read time">{% if words < 360 %}1 min read{% else %}{{ words | divided_by:180 }} mins read{% endif %} <i class="fa fa-clock-o" aria-hidden="true"></i></span>
@@ -0,0 +1,71 @@
1
+ <div class="col col-12 tags">
2
+ <div id="tag_cloud" class="d-none">
3
+ {% assign site_tags = site.tags | sort %}
4
+ {% for tag in site_tags %}
5
+ {% for post in tag[1] %}
6
+ {% if include.object.category %}
7
+ {% if post.category == include.object.category %}
8
+ <a class="btn btn-secondary my-2" href="?tag={{tag[0]}}">
9
+ {{tag[0]}}
10
+ </a>
11
+ {% break %}
12
+ {% endif %}
13
+ {% else %}
14
+ <a class="btn btn-secondary my-2" href="?tag={{tag[0]}}">
15
+ {{tag[0]}}
16
+ </a>
17
+ {% break %}
18
+ {% endif %}
19
+ {% endfor %}
20
+ {% endfor %}
21
+ </div>
22
+ <a type="button" class="btn btn-secondary d-none" id="view_all_tags_btn">View all tags</a>
23
+ </div>
24
+ <div class="col col-12 tagged_posts" id="tagged_posts">
25
+ {% for tag in site.tags %}
26
+ <div class="tag_list {{tag[0] | slugify}} d-none">
27
+ <h3>{{ tag[0] }}</h3>
28
+ <ul class="list-unstyled">
29
+ {% for post in tag[1] %}
30
+ {% if include.object.category %}
31
+ {% if post.category == include.object.category %}
32
+ <li class="media" itemprop="author" itemscope="" itemtype="http://schema.org/Person">
33
+ {% assign author = site.authors | where: "username", post.author | first %}
34
+ {% assign author-url = author.url %}
35
+ {% assign author_name = author.name %}
36
+ {% capture author_image_alt %}{{author_name}} image{% endcapture %}
37
+ {% if author.image %}
38
+ {% assign author_image = author.image %}
39
+ {% else %}
40
+ {% assign author_image = site.avatar_placeholder %}
41
+ {% endif %}
42
+ <div class="d-block d-md-inline-block mx-auto my-2 m-md-2 text-md-left text-center">
43
+ <a href="{{author-url}}" itemprop="url" rel="author">
44
+ {% picture author_thumbnail {{author_image}} --alt {{author_image_alt}} %}
45
+ </a>
46
+ </div>
47
+
48
+ <div class="media-body">
49
+ <a href="{{ post.url }}">
50
+ <h5 class="mt-0 mb-1">{{post.title}}</h5>
51
+ <div class="post_meta" >
52
+ Posted by <strong itemprop="name" rel="author">{{author_name}}</strong> on
53
+ <time datetime="{{post.date}}" >{{post.date | date: "%A, %B %-d, %Y"}}</time>
54
+ </div>
55
+ {% if post.description %}
56
+ {{post.description | truncate: 50 }}
57
+ {% else %}
58
+ {{ post.content | strip_html | truncate: 50 }}
59
+ {% endif %}
60
+ </a>
61
+ </div>
62
+ </li>
63
+ {% endif %}
64
+ {% else %}
65
+ <li><a href="{{ post.url }}">{{ post.title }}</a></li>
66
+ {% endif %}
67
+ {% endfor %}
68
+ </ul>
69
+ </div>
70
+ {% endfor %}
71
+ </div>
@@ -16,7 +16,6 @@
16
16
  {% assign description = site.description %}
17
17
  {% endif %}
18
18
 
19
-
20
19
  {% if page.title %}
21
20
  {% assign title = page.title %}
22
21
  {% else %}
@@ -52,7 +51,9 @@
52
51
  {% if site.google_analytics.enabled %}
53
52
  <meta name="analytics_code" content="{{site.google_analytics.code}}">
54
53
  {% endif %}
55
- {% if page.keywords %}
54
+ {% if page.tags %}
55
+ <meta name="keywords" content="{{page.tags | join: ", "}}">
56
+ {% elsif page.keywords %}
56
57
  <meta name="keywords" content="{{page.keywords}}">
57
58
  {% endif %}
58
59
  {% include_cached components/schema.html %}
@@ -1,4 +1,5 @@
1
- {% if page.jumbotron.slider %}
1
+ {% assign num_of_slides = page.jumbotron.slider | size %}
2
+ {% if page.jumbotron.slider and num_of_slides > 0 %}
2
3
  <div class="jumbotron jumbotron-fluid background_image slider {% if page.jumbotron.class %}{{page.jumbotron.class}}{% endif %}">
3
4
  <div id="jumbotron-slider" class="owl-carousel owl-theme full-width-slider">
4
5
  {% for slide in page.jumbotron.slider %}
@@ -16,9 +16,9 @@
16
16
  </div>
17
17
  {% if site.data.footer.footer_brand %}
18
18
  <div class="col col-12 text-white text-center m-t-10">
19
- <a href="{{site.url}}/">
20
- <img src="{{site.data.footer.footer_brand.logo}}" class="footer-logo mx-auto"
21
- alt="{{site.name}} Logo" />
19
+ <a href="{{site.data.footer.footer_brand.url}}/">
20
+ <img src="{{site.data.footer.footer_brand.path}}" class="footer-logo mx-auto"
21
+ alt="{{site.data.footer.footer_brand.alt}}" />
22
22
  </a>
23
23
  </div>
24
24
  {% endif %}
@@ -18,33 +18,54 @@ css_package: blog
18
18
  </div>
19
19
  <div class="row bg-light">
20
20
  <div class="container">
21
- {% assign author = site.authors | where: "username", page.author | first %}
22
- {% assign author-url = author.url %}
23
- {% assign author_name = author.name %}
24
- {% capture author_image_alt %}{{author_name}} image{% endcapture %}
25
- {% if author.image %}
26
- {% assign author_image = author.image %}
27
- {% else %}
28
- {% assign author_image = site.avatar_placeholder %}
29
- {% endif %}
30
- <div itemprop="author" itemscope="" itemtype="http://schema.org/Person" class="d-block d-md-inline-block mx-auto my-2 m-md-2 text-md-left text-center">
31
- <a href="{{author-url}}" itemprop="url" rel="author">
32
- {% picture author_thumbnail {{author_image}} --alt {{author_image_alt}} %}
33
- </a>
34
- </div>
35
- <div class="blockquote d-block d-md-inline-block mx-2 text-md-left text-center">
36
- <strong itemprop="name">{{author_name}}</strong>
37
- </div>
38
- <span class="divider d-none d-md-inline-block">|</span>
39
- <div class="post_info text-center text-md-left d-block d-md-inline-block">
40
- <div class="author_name d-inline-block mx-2">
41
- <time datetime="{{page.date}}" itemprop="datePublished">{{page.date | date: "%A, %B %-d, %Y"}}</time>
21
+ <div class="row" itemprop="author" itemscope="" itemtype="http://schema.org/Person">
22
+ <div class="col col-12 col-sm-2">
23
+ {% assign author = site.authors | where: "username", page.author | first %}
24
+ {% assign author-url = author.url %}
25
+ {% assign author_name = author.name %}
26
+ {% capture author_image_alt %}{{author_name}} image{% endcapture %}
27
+ {% if author.image %}
28
+ {% assign author_image = author.image %}
29
+ {% else %}
30
+ {% assign author_image = site.avatar_placeholder %}
31
+ {% endif %}
32
+ <div class="d-block d-md-inline-block mx-auto my-2 m-md-2 text-md-left text-center">
33
+ <a href="{{author-url}}" itemprop="url" rel="author">
34
+ {% picture author_thumbnail {{author_image}} --alt {{author_image_alt}} %}
35
+ </a>
36
+ </div>
42
37
  </div>
43
- <span class="divider">|</span>
44
- <div class="read_time d-inline-block mx-2">
45
- {% include blog/read_time.html %}
46
- </div>
47
- </div>
38
+ <div class="col col-12 col-sm-10 d-flex align-items-center">
39
+ <div class="row">
40
+ <div class="col col-12">
41
+ <div class="blockquote d-block d-md-inline-block mx-2 text-md-left text-center">
42
+ <strong itemprop="name" rel="author">{{author_name}}</strong>
43
+ </div>
44
+ <span class="divider d-none d-md-inline-block">|</span>
45
+ <div class="post_info text-center text-md-left d-block d-md-inline-block">
46
+ <div class="author_name d-inline-block mx-2">
47
+ <time datetime="{{page.date}}" itemprop="datePublished">{{page.date | date: "%A, %B %-d, %Y"}}</time>
48
+ </div>
49
+ <span class="divider">|</span>
50
+ <div class="read_time d-inline-block mx-2">
51
+ {% include blog/read_time.html %}
52
+ </div>
53
+ </div>
54
+ </div>
55
+ {% if page.tags_enabled %}
56
+ <div class="col col-12">
57
+ <div class="post_tags text-center text-md-left my-2 my-sm-1">
58
+ {% assign post_tags = page.tags | sort %}
59
+ {% for tag in post_tags %}
60
+ <a class="btn bg-light text-dark btn-sm my-1" href="/{{page.category | downcase }}/tags/?tag={{tag}}">
61
+ {{tag}}
62
+ </a>
63
+ {% endfor %}
64
+ </div>
65
+ </div>
66
+ {% endif %}
67
+ </div>
68
+ </div>
48
69
  </div>
49
70
  </div>
50
71
  </div>
@@ -13,6 +13,7 @@
13
13
  }
14
14
  }
15
15
  }
16
+
16
17
  #image_header {
17
18
  height: 200px;
18
19
  overflow: hidden;
@@ -34,7 +35,14 @@
34
35
  width: 200px;
35
36
  display: block;
36
37
  float: left;
37
- margin: 0px 20px;
38
+ margin: 10px 20px;
39
+ }
40
+ }
41
+ &.small-center {
42
+ @include media-breakpoint-up(md) {
43
+ width: 200px;
44
+ display: block;
45
+ margin: 20px auto;
38
46
  }
39
47
  }
40
48
  &.medium-inline {
@@ -42,7 +50,14 @@
42
50
  width: 300px;
43
51
  display: block;
44
52
  float: left;
45
- margin: 0px 20px;
53
+ margin: 10px 20px;
54
+ }
55
+ }
56
+ &.medium-center {
57
+ @include media-breakpoint-up(md) {
58
+ width: 300px;
59
+ display: block;
60
+ margin: 20px auto;
46
61
  }
47
62
  }
48
63
  &.large-inline {
@@ -50,7 +65,14 @@
50
65
  width: 400px;
51
66
  display: block;
52
67
  float: left;
53
- margin: 0px 20px;
68
+ margin: 10px 20px;
69
+ }
70
+ }
71
+ &.large-center {
72
+ @include media-breakpoint-up(md) {
73
+ width: 400px;
74
+ display: block;
75
+ margin: 20px auto;
54
76
  }
55
77
  }
56
78
  &.right {
@@ -208,7 +230,7 @@
208
230
  width: 100%;
209
231
  color: white;
210
232
  position: absolute;
211
- z-index: 1;
233
+ z-index: 0;
212
234
  text-align: center;
213
235
  top: 50%;
214
236
  transform: translateY(-50%);
@@ -230,12 +252,22 @@
230
252
  -moz-box-shadow: none;
231
253
  }
232
254
  .card {
255
+ a.wrapper_link {
256
+ position: absolute;
257
+ width: 100%;
258
+ height: 100%;
259
+ z-index: 1;
260
+ }
233
261
  border-radius: 20px;
234
262
  overflow: hidden;
235
263
  -webkit-box-shadow: 0px 0px 20px 5px #f0f0f0;
236
264
  -moz-box-shadow: 0px 0px 20px 5px #e5e5e5;
237
265
  box-shadow: 0px 0px 20px 5px #ebebeb;
238
266
  transition: all 200ms ease;
267
+ a {
268
+ position: relative;
269
+ z-index: 2;
270
+ }
239
271
  &:hover {
240
272
  transform: translateY(-5px);
241
273
  -webkit-box-shadow: 0px 0px 20px 5px #b3b3b3;
@@ -1,3 +1,22 @@
1
+ function slugify(string) {
2
+ const a =
3
+ "àáâäæãåāăąçćčđďèéêëēėęěğǵḧîïíīįìłḿñńǹňôöòóœøōõőṕŕřßśšşșťțûüùúūǘůűųẃẍÿýžźż·/_,:;";
4
+ const b =
5
+ "aaaaaaaaaacccddeeeeeeeegghiiiiiilmnnnnoooooooooprrsssssttuuuuuuuuuwxyyzzz------";
6
+ const p = new RegExp(a.split("").join("|"), "g");
7
+
8
+ return string
9
+ .toString()
10
+ .toLowerCase()
11
+ .replace(/\s+/g, "-") // Replace spaces with -
12
+ .replace(p, (c) => b.charAt(a.indexOf(c))) // Replace special characters
13
+ .replace(/&/g, "-and-") // Replace & with 'and'
14
+ .replace(/[^\w\-]+/g, "") // Remove all non-word characters
15
+ .replace(/\-\-+/g, "-") // Replace multiple - with single -
16
+ .replace(/^-+/, "") // Trim - from start of text
17
+ .replace(/-+$/, ""); // Trim - from end of text
18
+ }
19
+
1
20
  $(document).ready(function () {
2
21
  // Clipboard JS
3
22
  if ($("div.highlight").length > 0) {
@@ -26,6 +45,39 @@ $(document).ready(function () {
26
45
  });
27
46
  });
28
47
  }
48
+ // Tagged Posts
49
+ if ($("#tagged_posts").length > 0) {
50
+ var getUrlParameter = (sParam) => {
51
+ var sPageURL = window.location.search.substring(1),
52
+ sURLVariables = sPageURL.split("&"),
53
+ sParameterName,
54
+ i;
55
+
56
+ for (i = 0; i < sURLVariables.length; i++) {
57
+ sParameterName = sURLVariables[i].split("=");
58
+
59
+ if (sParameterName[0] === sParam) {
60
+ return sParameterName[1] === undefined
61
+ ? true
62
+ : decodeURIComponent(sParameterName[1]);
63
+ }
64
+ }
65
+ };
66
+ var tag = getUrlParameter("tag");
67
+ if (tag !== undefined) {
68
+ console.log(tag);
69
+ $(".tag_list").addClass("d-none");
70
+ $(`.tag_list.${slugify(tag)}`).addClass("d-block");
71
+ $(`#tag_cloud`).addClass("d-none");
72
+ $(`#view_all_tags_btn`).addClass("d-inline-block");
73
+ $(this).html(tag);
74
+ $("#view_all_tags_btn").on("click", function () {
75
+ window.location.replace(window.location.pathname);
76
+ });
77
+ } else {
78
+ $(`#tag_cloud`).removeClass("d-none");
79
+ }
80
+ }
29
81
  if ($("#jumbotron-slider").length > 0) {
30
82
  $("#jumbotron-slider").owlCarousel({
31
83
  navigation: true,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: linaro-jekyll-theme
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.1
4
+ version: 4.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Kirkby
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-27 00:00:00.000000000 Z
11
+ date: 2020-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -180,6 +180,7 @@ files:
180
180
  - _includes/blog/post_series.html
181
181
  - _includes/blog/post_sidebar.html
182
182
  - _includes/blog/read_time.html
183
+ - _includes/blog/tags.html
183
184
  - _includes/components/breadcrumb.html
184
185
  - _includes/components/carousel_header.html
185
186
  - _includes/components/cookie_manager.html