linaro-jekyll-theme 4.0.2 → 4.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/_config.yml +9 -11
- data/_data/footer.yml +7 -25
- data/_data/picture.yml +6 -0
- data/_includes/blog/display_latest_posts.html +23 -7
- data/_includes/blog/read_time.html +1 -1
- data/_includes/blog/tags.html +71 -0
- data/_includes/components/head.html +5 -4
- data/_includes/flow/blocks.html +1 -1
- data/_includes/flow/flow_inner.html +1 -1
- data/_includes/flow/members.html +26 -0
- data/_includes/footer/footer.html +3 -3
- data/_layouts/post.html +58 -27
- data/_sass/core/blog.scss +36 -4
- data/_sass/core/flow.scss +103 -83
- data/assets/js/app/main.js +52 -0
- metadata +4 -3
- data/_includes/flow/members-section.html +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5c0b61cac53432b49557c91d8291f20feb3f3e0c2f2a8d891aeb2c649964510
|
4
|
+
data.tar.gz: 24487ccca1a2ebb1f268c45754b05197021866c45236ee00d86b09f27105a45d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2d98bb9a3abc4860978a3e296c23061bc9bfb278f56911c87aca459c8fd178185ab439d7e7e8da65b54810cbf32581eb347c211df4d0c1567a4bd7a1634f47c
|
7
|
+
data.tar.gz: 8f680f7a05066c4fa107f54885adf94f34f37e6716e9f373cbbdf74186dd461b845b2a4f99015013b83649476fe9c47048c18afea091157559826e0b8b0caca6
|
data/_config.yml
CHANGED
@@ -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:
|
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,29 +136,24 @@ disqus:
|
|
133
136
|
# Edit on GitHub Settings
|
134
137
|
edit-on-github:
|
135
138
|
enabled: true
|
136
|
-
repo: https://www.github.com/linaro-marketing/
|
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
|
140
143
|
# Shema.org settings used in the schema.html include.
|
141
144
|
schema:
|
142
|
-
"@
|
145
|
+
"@context": "https://schema.org"
|
146
|
+
"@type": "Organization"
|
143
147
|
"name": "Linaro"
|
144
148
|
"url": "https://www.linaro.org"
|
149
|
+
"email": "contact@linaro.org"
|
145
150
|
"logo": "https://www.linaro.org/assets/images/content/linaro-logo.png"
|
146
151
|
"contactPoint":
|
147
152
|
"@type": "ContactPoint"
|
148
153
|
"telephone": "01223 400060"
|
149
154
|
"contactType": "customer service"
|
150
155
|
"availableLanguage": "en"
|
151
|
-
"sameAs":
|
152
|
-
- "https://facebook.com/LinaroOrg"
|
153
|
-
- "https://twitter.com/LinaroOrg"
|
154
|
-
- "https://instagram.com/LinaroOrg"
|
155
|
-
- "https://www.linkedin.com/company/1026961/"
|
156
|
-
- "https://youtube.com/LinaroOrg"
|
157
|
-
- "https://github.com/linaro"
|
158
|
-
- "https://www.linaro.org"
|
156
|
+
"sameAs": "https://www.linaro.org"
|
159
157
|
# FESS search label
|
160
158
|
search_label: Linaro
|
161
159
|
# ----------- JEKYLL PLUGINS ---------------------
|
data/_data/footer.yml
CHANGED
@@ -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
|
-
|
6
|
-
|
7
|
-
|
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
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
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/
|
data/_data/picture.yml
CHANGED
@@ -73,6 +73,12 @@ markup_presets:
|
|
73
73
|
img: 'class="lazyload img-fluid blog_content_image "'
|
74
74
|
formats: [webp, original]
|
75
75
|
widths: [400, 800, 1200]
|
76
|
+
members_image:
|
77
|
+
markup: data_picture
|
78
|
+
attributes:
|
79
|
+
img: 'class="lazyload img-fluid members_image "'
|
80
|
+
formats: [webp, original]
|
81
|
+
widths: [100, 200, 300, 400]
|
76
82
|
header_image:
|
77
83
|
markup: data_auto
|
78
84
|
attributes:
|
@@ -53,6 +53,14 @@
|
|
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
66
|
{{post.description | truncate: 184 }}
|
@@ -70,9 +78,9 @@
|
|
70
78
|
</div>
|
71
79
|
{% else %}
|
72
80
|
|
73
|
-
|
74
|
-
|
75
|
-
<
|
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
|
-
|
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
|
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,13 +51,15 @@
|
|
52
51
|
{% if site.google_analytics.enabled %}
|
53
52
|
<meta name="analytics_code" content="{{site.google_analytics.code}}">
|
54
53
|
{% endif %}
|
55
|
-
{% if page.
|
56
|
-
<meta name="keywords" content="{{page.
|
54
|
+
{% if page.tags %}
|
55
|
+
<meta name="keywords" content="{{page.tags | join: ", "}}">
|
56
|
+
{% elsif page.keywords %}
|
57
|
+
<meta name="keywords" content="{{page.keywords | join: ", "}}">
|
57
58
|
{% endif %}
|
58
59
|
{% include_cached components/schema.html %}
|
59
60
|
{% if page.url != "/" and site.breadcrumb_schema %}
|
60
61
|
<!--Breadcrumb Schema-->
|
61
|
-
{% capture breadcrumb_schema %}{"@context": "https://schema.org","@type": "BreadcrumbList","itemListElement":[{% assign crumbs = page.url | remove:'/index.html' | split: '/' %}{% assign breadcrumb_path = "/" %}{% for crumb in crumbs offset: 1 %}{% assign crumb_limit = forloop.index | plus: 1 %}{% capture breadcrumb_path %}{{breadcrumb_path}}{{crumb}}/{% endcapture%}{"@type": "ListItem","position": {{forloop.index}},"item":{"@id": "{{breadcrumb_path | absolute_url}}","name": "{% assign page_data = site.pages | where: "url", breadcrumb_path | first %}{{page_data.title}}"}}{% unless forloop.last %},{% endunless %}{% endfor %}]}{% endcapture %}
|
62
|
+
{% capture breadcrumb_schema %}{"@context": "http://schema.org","@type": "Webpage", "breadcrumb": {"@context": "https://schema.org","@type": "BreadcrumbList","itemListElement":[{% assign crumbs = page.url | remove:'/index.html' | split: '/' %}{% assign breadcrumb_path = "/" %}{% for crumb in crumbs offset: 1 %}{% assign crumb_limit = forloop.index | plus: 1 %}{% capture breadcrumb_path %}{{breadcrumb_path}}{{crumb}}/{% endcapture%}{"@type": "ListItem","position": {{forloop.index}},"item":{"@id": "{{breadcrumb_path | absolute_url}}","name": "{% assign page_data = site.pages | where: "url", breadcrumb_path | first %}{% if page_data.title %}{{page_data.title}}{% else %}{{breadcrumb_path}}{% endif %}"}}{% unless forloop.last %},{% endunless %}{% endfor %}]}}{% endcapture %}
|
62
63
|
<script type="application/ld+json">{{breadcrumb_schema | strip_newlines | strip }}</script>
|
63
64
|
{% endif %}
|
64
65
|
{% if page.schema %}<script type="application/ld+json">{{page.schema | jsonify }}</script>{% endif %}
|
data/_includes/flow/blocks.html
CHANGED
@@ -35,7 +35,7 @@
|
|
35
35
|
{% capture block_image_alt %}{{block.title}} image {% endcapture %}
|
36
36
|
{% picture card_block_image {{block_image}} --alt {{block_image_alt}} %}
|
37
37
|
{% endif %}
|
38
|
-
<div class="card-body {% if block.
|
38
|
+
<div class="card-body {% if block.content_style %}{{block.content_style}}{% endif %}">
|
39
39
|
{% if block.title %}
|
40
40
|
<h5 class="card-title">{{block.title}}</h5>
|
41
41
|
{% endif %}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
{% if section.format == "title" %}
|
3
3
|
{% include flow/title.html object=section %}
|
4
4
|
{% elsif section.format == "members" %}
|
5
|
-
{% include flow/members
|
5
|
+
{% include flow/members.html object=section %}
|
6
6
|
{% elsif section.format == "youtube" %}
|
7
7
|
<div class="col col-12 youtube_embed">
|
8
8
|
{% include youtube.html url=section.url title=section.title poster_image=section.poster_image %}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
{% if include.object.members_content.source %}
|
2
|
+
{% assign members = site.data[include.object.members_content.source] %}
|
3
|
+
{% else %}
|
4
|
+
{% assign members = include.object.members_content.items %}
|
5
|
+
{% endif %}
|
6
|
+
<div class="col col-12 members_section {% if include.object.style %}{{include.object.style}}{% endif %}">
|
7
|
+
<div class="row d-flex justify-content-center align-items-center">
|
8
|
+
{% for member in members %}
|
9
|
+
{% if member.image.path contains "http" %}
|
10
|
+
<div class="col col-6 col-sm-{{include.object.members_content.item_width}}">
|
11
|
+
{% if member.url %}<a href="{{member.url}}">{% endif %}
|
12
|
+
<img class="lazyload img-responsive" alt="{{member.image.alt}}"
|
13
|
+
src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
|
14
|
+
data-src="{{member.image.path}}"/>
|
15
|
+
{% if member.url %}</a>{% endif %}
|
16
|
+
</div>
|
17
|
+
{% else %}
|
18
|
+
<div class="col col-6 col-sm-{{include.object.members_content.item_width}}">
|
19
|
+
{% if member.url %}<a href="{{member.url}}">{% endif %}
|
20
|
+
{% picture members_image {{member.image.path}} --alt {{member.image.alt}} %}
|
21
|
+
{% if member.url %}</a>{% endif %}
|
22
|
+
</div>
|
23
|
+
{% endif %}
|
24
|
+
{% endfor %}
|
25
|
+
</div>
|
26
|
+
</div>
|
@@ -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.
|
21
|
-
alt="{{site.
|
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 %}
|
data/_layouts/post.html
CHANGED
@@ -2,13 +2,22 @@
|
|
2
2
|
layout: base
|
3
3
|
css_package: blog
|
4
4
|
---
|
5
|
-
<div itemscope="" itemtype="http://schema.org/BlogPosting">
|
5
|
+
<div itemscope="" itemtype="http://schema.org/BlogPosting" >
|
6
|
+
<meta itemprop="mainEntityOfPage" content="{{page.url | absolute_url}}"/>
|
7
|
+
<div itemprop="publisher" itemscope="" itemtype="http://schema.org/Organization">
|
8
|
+
<meta itemprop="name" content="{{site.schema.name}}" />
|
9
|
+
<meta itemprop="url" content="{{site.schema.url}}" />
|
10
|
+
<div itemprop="logo" itemscope itemtype="https://schema.org/ImageObject">
|
11
|
+
<meta itemprop="url" content="{{site.schema.logo}}">
|
12
|
+
</div>
|
13
|
+
</div>
|
6
14
|
<div class="container-fluid" >
|
7
15
|
{% if page.strap_image %}
|
8
16
|
<div class="row" id="image_header">
|
9
17
|
{% assign image_path = page.strap_image %}
|
10
18
|
{% capture image_alt %}{{page.title}} background image{% endcapture %}
|
11
19
|
{% picture header_image {{image_path}} --alt {{image_alt}} %}
|
20
|
+
<meta itemprop="image" content="{{image_path | absolute_url}}" />
|
12
21
|
</div>
|
13
22
|
{% endif %}
|
14
23
|
<div class="row">
|
@@ -18,33 +27,55 @@ css_package: blog
|
|
18
27
|
</div>
|
19
28
|
<div class="row bg-light">
|
20
29
|
<div class="container">
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
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>
|
30
|
+
<div class="row">
|
31
|
+
<div class="col col-12 col-sm-2">
|
32
|
+
{% assign author = site.authors | where: "username", page.author | first %}
|
33
|
+
{% assign author-url = author.url %}
|
34
|
+
{% assign author_name = author.name %}
|
35
|
+
{% capture author_image_alt %}{{author_name}} image{% endcapture %}
|
36
|
+
{% if author.image %}
|
37
|
+
{% assign author_image = author.image %}
|
38
|
+
{% else %}
|
39
|
+
{% assign author_image = site.avatar_placeholder %}
|
40
|
+
{% endif %}
|
41
|
+
<div class="d-block d-md-inline-block mx-auto my-2 m-md-2 text-md-left text-center" itemprop="author" itemscope="" itemtype="http://schema.org/Person">
|
42
|
+
<meta itemprop="name" content="{{author_name}}" />
|
43
|
+
<a href="{{author-url}}" itemprop="url" content="{{author-url | absolute_url}}">
|
44
|
+
{% picture author_thumbnail {{author_image}} --alt {{author_image_alt}} %}
|
45
|
+
</a>
|
46
|
+
</div>
|
42
47
|
</div>
|
43
|
-
<
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
+
<div class="col col-12 col-sm-10 d-flex align-items-center">
|
49
|
+
<div class="row">
|
50
|
+
<div class="col col-12">
|
51
|
+
<div class="blockquote d-block d-md-inline-block mx-2 text-md-left text-center">
|
52
|
+
<strong>{{author_name}}</strong>
|
53
|
+
</div>
|
54
|
+
<span class="divider d-none d-md-inline-block">|</span>
|
55
|
+
<div class="post_info text-center text-md-left d-block d-md-inline-block">
|
56
|
+
<div class="d-inline-block mx-2">
|
57
|
+
<time datetime="{{page.date}}" itemprop="datePublished dateModified" rel="BlogPosting">{{page.date | date: "%A, %B %-d, %Y"}}</time>
|
58
|
+
</div>
|
59
|
+
<span class="divider">|</span>
|
60
|
+
<div class="read_time d-inline-block mx-2">
|
61
|
+
{% include blog/read_time.html %}
|
62
|
+
</div>
|
63
|
+
</div>
|
64
|
+
</div>
|
65
|
+
{% if page.tags_enabled %}
|
66
|
+
<div class="col col-12">
|
67
|
+
<div class="post_tags text-center text-md-left my-2 my-sm-1">
|
68
|
+
{% assign post_tags = page.tags | sort %}
|
69
|
+
{% for tag in post_tags %}
|
70
|
+
<a class="btn bg-light text-dark btn-sm my-1" href="/{{page.category | downcase }}/tags/?tag={{tag}}">
|
71
|
+
{{tag}}
|
72
|
+
</a>
|
73
|
+
{% endfor %}
|
74
|
+
</div>
|
75
|
+
</div>
|
76
|
+
{% endif %}
|
77
|
+
</div>
|
78
|
+
</div>
|
48
79
|
</div>
|
49
80
|
</div>
|
50
81
|
</div>
|
data/_sass/core/blog.scss
CHANGED
@@ -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:
|
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:
|
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:
|
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:
|
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;
|
data/_sass/core/flow.scss
CHANGED
@@ -1,94 +1,114 @@
|
|
1
1
|
#flow_wrapper {
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
}
|
23
|
-
}
|
2
|
+
font-size: 1.2rem !important;
|
3
|
+
@include media-breakpoint-only(xs) {
|
4
|
+
font-size: 1.1rem !important;
|
5
|
+
}
|
6
|
+
background-color: white;
|
7
|
+
#collapseSection {
|
8
|
+
.btn.btn-link {
|
9
|
+
&:after {
|
10
|
+
color: #666;
|
11
|
+
top: 10px;
|
12
|
+
right: 0px;
|
13
|
+
position: absolute;
|
14
|
+
margin-right: 30px;
|
15
|
+
font-family: "fontello";
|
16
|
+
font-size: 22px;
|
17
|
+
content: "\e80f";
|
18
|
+
}
|
19
|
+
&.collapsed {
|
20
|
+
&:after {
|
21
|
+
content: "\e80e";
|
24
22
|
}
|
23
|
+
}
|
24
|
+
}
|
25
|
+
}
|
26
|
+
.row {
|
27
|
+
padding: $flow_row_padding 0;
|
28
|
+
&.background_image_row {
|
29
|
+
overflow: hidden;
|
30
|
+
position: relative;
|
31
|
+
.header_background_image {
|
32
|
+
position: absolute;
|
33
|
+
object-fit: cover;
|
34
|
+
height: 100%;
|
35
|
+
width: 100%;
|
36
|
+
filter: brightness(0.4);
|
37
|
+
z-index: 0;
|
38
|
+
top: 0px;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
& > .container > .col.col-12 {
|
42
|
+
padding: $flow_component_padding 0px;
|
43
|
+
}
|
44
|
+
.tabbed_content {
|
45
|
+
.tab-content {
|
46
|
+
margin-top: 15px;
|
47
|
+
}
|
25
48
|
}
|
26
|
-
.row {
|
27
|
-
padding: $flow_row_padding 0;
|
28
|
-
&.background_image_row {
|
29
|
-
overflow: hidden;
|
30
|
-
position: relative;
|
31
|
-
.header_background_image {
|
32
|
-
position: absolute;
|
33
|
-
object-fit: cover;
|
34
|
-
height: 100%;
|
35
|
-
width: 100%;
|
36
|
-
filter: brightness(0.4);
|
37
|
-
z-index:0;
|
38
|
-
top:0px;
|
39
|
-
}
|
40
|
-
}
|
41
|
-
& > .container > .col.col-12 {
|
42
|
-
padding: $flow_component_padding 0px;
|
43
|
-
}
|
44
|
-
.tabbed_content {
|
45
|
-
.tab-content {
|
46
|
-
margin-top: 15px;
|
47
|
-
}
|
48
|
-
}
|
49
49
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
}
|
59
|
-
}
|
50
|
+
.slider_block {
|
51
|
+
.item {
|
52
|
+
height: 400px;
|
53
|
+
overflow: hidden;
|
54
|
+
img {
|
55
|
+
height: 100%;
|
56
|
+
width: auto;
|
57
|
+
object-fit: cover;
|
60
58
|
}
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
59
|
+
}
|
60
|
+
}
|
61
|
+
.slider_row {
|
62
|
+
.item {
|
63
|
+
height: 200px;
|
64
|
+
overflow: hidden;
|
65
|
+
img {
|
66
|
+
height: 100%;
|
67
|
+
width: auto;
|
68
|
+
object-fit: cover;
|
69
|
+
@include media-breakpoint-down(sm) {
|
70
|
+
margin: auto;
|
71
|
+
}
|
74
72
|
}
|
73
|
+
}
|
74
|
+
}
|
75
|
+
}
|
76
|
+
.members_section {
|
77
|
+
img.members_image {
|
78
|
+
height: 100px;
|
79
|
+
object-fit: contain;
|
80
|
+
width: 100%;
|
81
|
+
padding: 15px;
|
75
82
|
}
|
76
|
-
|
77
|
-
|
78
|
-
|
83
|
+
}
|
84
|
+
.blocks {
|
85
|
+
.block_column {
|
86
|
+
margin-top: 15px;
|
87
|
+
}
|
88
|
+
.card {
|
89
|
+
overflow: hidden;
|
90
|
+
&.background_image {
|
91
|
+
picture {
|
92
|
+
height: 100%;
|
93
|
+
}
|
94
|
+
img {
|
95
|
+
filter: brightness(0.5);
|
96
|
+
height: 100%;
|
97
|
+
position: absolute;
|
98
|
+
left: 0;
|
99
|
+
right: 0;
|
100
|
+
top: 0;
|
101
|
+
z-index: 0;
|
79
102
|
}
|
80
|
-
.card {
|
81
|
-
|
82
|
-
img {
|
83
|
-
filter: brightness(0.5);
|
84
|
-
height: 100%;
|
85
|
-
}
|
86
|
-
}
|
87
|
-
.card-img-top {
|
88
|
-
height: 150px;
|
89
|
-
width: 100%;
|
90
|
-
object-fit: cover;
|
91
|
-
}
|
103
|
+
.card-body {
|
104
|
+
z-index: 1;
|
92
105
|
}
|
106
|
+
}
|
107
|
+
.card-img-top {
|
108
|
+
height: 150px;
|
109
|
+
width: 100%;
|
110
|
+
object-fit: cover;
|
111
|
+
}
|
93
112
|
}
|
113
|
+
}
|
94
114
|
}
|
data/assets/js/app/main.js
CHANGED
@@ -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.
|
4
|
+
version: 4.1.4
|
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-
|
11
|
+
date: 2020-11-09 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
|
@@ -204,7 +205,7 @@ files:
|
|
204
205
|
- _includes/flow/flow_inner.html
|
205
206
|
- _includes/flow/full_width_row.html
|
206
207
|
- _includes/flow/image.html
|
207
|
-
- _includes/flow/members
|
208
|
+
- _includes/flow/members.html
|
208
209
|
- _includes/flow/slider.html
|
209
210
|
- _includes/flow/slider_row.html
|
210
211
|
- _includes/flow/tabbed_content.html
|
@@ -1,24 +0,0 @@
|
|
1
|
-
{% if include.object.members_content.members_content.source %}
|
2
|
-
{% assign members = site.data[include.object.members_content.source] %}
|
3
|
-
{% else %}
|
4
|
-
{% assign members = include.object.members_content.items %}
|
5
|
-
{% endif %}
|
6
|
-
<div class="members_section {% if include.object.style %}{{include.object.style}}{% endif %}">
|
7
|
-
{% for member in members %}
|
8
|
-
{% if member.url %}<a href="{{member.url}}">{% endif %}
|
9
|
-
{% if member.image.path contains "http" %}
|
10
|
-
<div class="col-xs-6 col-sm-{{include.object.members_content.item_width}}">
|
11
|
-
<img class="lazyload img-responsive" alt="{{member.image.alt}}"
|
12
|
-
src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
|
13
|
-
data-src="{{member.image.path}}"/>
|
14
|
-
</div>
|
15
|
-
{% else %}
|
16
|
-
{% assign image_path = member.image.path %}
|
17
|
-
{% assign full_path = member.image.path %}
|
18
|
-
<div class="col-xs-6 col-sm-{{include.object.members_content.item_width}}">
|
19
|
-
<!--TODO picture-->
|
20
|
-
</div>
|
21
|
-
{% endif %}
|
22
|
-
{% if member.url %}</a>{% endif %}
|
23
|
-
{% endfor %}
|
24
|
-
</div>
|