linaro-jekyll-theme 4.0.1 → 4.1.3

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: 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