diff options
| author | Andrew Lee <alee14498@gmail.com> | 2019-10-27 09:57:37 -0400 |
|---|---|---|
| committer | Andrew Lee <alee14498@gmail.com> | 2019-10-27 09:57:37 -0400 |
| commit | e62e7bb6b14555c9bbe5d40d217103984f4f80e6 (patch) | |
| tree | 21887d847dccacb47644eb6f74ce31326172303c /_includes | |
| parent | 716ea6ed2b64c921a799d872a07bfbd53b2a3e58 (diff) | |
| download | pokeworld-website-e62e7bb6b14555c9bbe5d40d217103984f4f80e6.tar.gz pokeworld-website-e62e7bb6b14555c9bbe5d40d217103984f4f80e6.tar.bz2 pokeworld-website-e62e7bb6b14555c9bbe5d40d217103984f4f80e6.zip | |
Rewrite progress
Diffstat (limited to '_includes')
53 files changed, 1785 insertions, 0 deletions
diff --git a/_includes/analytics-providers/custom.html b/_includes/analytics-providers/custom.html new file mode 100644 index 0000000..c34b97a --- /dev/null +++ b/_includes/analytics-providers/custom.html @@ -0,0 +1,3 @@ +<!-- start custom analytics snippet --> + +<!-- end custom analytics snippet -->
\ No newline at end of file diff --git a/_includes/analytics-providers/google-gtag.html b/_includes/analytics-providers/google-gtag.html new file mode 100644 index 0000000..16d0cf1 --- /dev/null +++ b/_includes/analytics-providers/google-gtag.html @@ -0,0 +1,9 @@ +<!-- Global site tag (gtag.js) - Google Analytics --> +<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.analytics.google.tracking_id }}"></script> +<script> + window.dataLayer = window.dataLayer || []; + function gtag(){dataLayer.push(arguments);} + gtag('js', new Date()); + + gtag('config', '{{ site.analytics.google.tracking_id }}', { 'anonymize_ip': {{ site.analytics.google.anonymize_ip | default: false }}}); +</script> diff --git a/_includes/analytics-providers/google-universal.html b/_includes/analytics-providers/google-universal.html new file mode 100644 index 0000000..68c2674 --- /dev/null +++ b/_includes/analytics-providers/google-universal.html @@ -0,0 +1,7 @@ +<script> + window.ga=function(){ga.q.push(arguments)};ga.q=[];ga.l=+new Date; + ga('create','{{ site.analytics.google.tracking_id }}','auto'); + ga('set', 'anonymizeIp', {{ site.analytics.google.anonymize_ip | default: false }}); + ga('send','pageview') +</script> +<script src="https://www.google-analytics.com/analytics.js" async></script> diff --git a/_includes/analytics-providers/google.html b/_includes/analytics-providers/google.html new file mode 100644 index 0000000..c5742b9 --- /dev/null +++ b/_includes/analytics-providers/google.html @@ -0,0 +1,14 @@ +<script> + var _gaq = _gaq || []; + _gaq.push(['_setAccount', '{{ site.analytics.google.tracking_id }}']); + {% if site.analytics.google.anonymize_ip == true %} + _gaq.push(['_gat._anonymizeIp']); + {% endif %} + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); +</script> diff --git a/_includes/analytics.html b/_includes/analytics.html new file mode 100644 index 0000000..371469f --- /dev/null +++ b/_includes/analytics.html @@ -0,0 +1,14 @@ +{% if jekyll.environment == 'production' and site.analytics.provider and page.analytics != false %} + +{% case site.analytics.provider %} +{% when "google" %} + {% include /analytics-providers/google.html %} +{% when "google-universal" %} + {% include /analytics-providers/google-universal.html %} +{% when "google-gtag" %} + {% include /analytics-providers/google-gtag.html %} +{% when "custom" %} + {% include /analytics-providers/custom.html %} +{% endcase %} + +{% endif %}
\ No newline at end of file diff --git a/_includes/archive-single.html b/_includes/archive-single.html new file mode 100644 index 0000000..489f000 --- /dev/null +++ b/_includes/archive-single.html @@ -0,0 +1,38 @@ +{% if post.header.teaser %} + {% capture teaser %}{{ post.header.teaser }}{% endcapture %} +{% else %} + {% assign teaser = site.teaser %} +{% endif %} + +{% if post.id %} + {% assign title = post.title | markdownify | remove: "<p>" | remove: "</p>" %} +{% else %} + {% assign title = post.title %} +{% endif %} + +<div class="{{ include.type | default: "list" }}__item"> + <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork"> + {% if include.type == "grid" and teaser %} + <div class="archive__item-teaser"> + <img src= + {% if teaser contains "://" %} + "{{ teaser }}" + {% else %} + "{{ teaser | relative_url }}" + {% endif %} + alt=""> + </div> + {% endif %} + <h2 class="archive__item-title" itemprop="headline"> + {% if post.link %} + <a href="{{ post.link }}">{{ title }}</a> <a href="{{ post.url | relative_url }}" rel="permalink"><i class="fas fa-link" aria-hidden="true" title="permalink"></i><span class="sr-only">Permalink</span></a> + {% else %} + <a href="{{ post.url | relative_url }}" rel="permalink">{{ title }}</a> + {% endif %} + </h2> + {% if post.read_time %} + <p class="page__meta"><i class="far fa-clock" aria-hidden="true"></i> {% include read-time.html %}</p> + {% endif %} + {% if post.excerpt %}<p class="archive__item-excerpt" itemprop="description">{{ post.excerpt | markdownify | strip_html | truncate: 160 }}</p>{% endif %} + </article> +</div> diff --git a/_includes/author-profile-custom-links.html b/_includes/author-profile-custom-links.html new file mode 100644 index 0000000..b89ffcb --- /dev/null +++ b/_includes/author-profile-custom-links.html @@ -0,0 +1,7 @@ +<!-- + <li> + <a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fas fa-fw" aria-hidden="true"></i> Custom Social Profile Link + </a> + </li> +-->
\ No newline at end of file diff --git a/_includes/author-profile.html b/_includes/author-profile.html new file mode 100644 index 0000000..b7d6214 --- /dev/null +++ b/_includes/author-profile.html @@ -0,0 +1,263 @@ +{% assign author = page.author | default: page.authors[0] | default: site.author %} +{% assign author = site.data.authors[author] | default: author %} + +<div itemscope itemtype="https://schema.org/Person"> + + {% if author.avatar %} + <div class="author__avatar"> + {% if author.avatar contains "://" %} + {% assign author_src = author.avatar %} + {% else %} + {% assign author_src = author.avatar | relative_url %} + {% endif %} + + {% if author.home %} + {% if author.home contains "://" %} + {% assign author_link = author.home %} + {% else %} + {% assign author_link = author.home | relative_url %} + {% endif %} + <a href="{{ author_link }}"> + <img src="{{ author_src }}" alt="{{ author.name }}" itemprop="image"> + </a> + {% else %} + <img src="{{ author_src }}" alt="{{ author.name }}" itemprop="image"> + {% endif %} + </div> + {% endif %} + + <div class="author__content"> + {% if author.home %} + <a href="{{ author_link }}"><h3 class="author__name" itemprop="name">{{ author.name }}</h3></a> + {% else %} + <h3 class="author__name" itemprop="name">{{ author.name }}</h3> + {% endif %} + {% if author.bio %} + <div class="author__bio" itemprop="description"> + {{ author.bio | markdownify }} + </div> + {% endif %} + </div> + + <div class="author__urls-wrapper"> + <button class="btn btn--inverse">{{ site.data.ui-text[site.locale].follow_label | remove: ":" | default: "Follow" }}</button> + <ul class="author__urls social-icons"> + {% if author.location %} + <li itemprop="homeLocation" itemscope itemtype="https://schema.org/Place"> + <i class="fas fa-fw fa-map-marker-alt" aria-hidden="true"></i> <span itemprop="name">{{ author.location }}</span> + </li> + {% endif %} + + {% if author.links %} + {% for link in author.links %} + {% if link.label and link.url %} + <li><a href="{{ link.url }}" rel="nofollow noopener noreferrer"><i class="{{ link.icon | default: 'fas fa-link' }}" aria-hidden="true"></i> {{ link.label }}</a></li> + {% endif %} + {% endfor %} + {% endif %} + + {% if author.uri %} + <li> + <a href="{{ author.uri }}" itemprop="url"> + <i class="fas fa-fw fa-link" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].website_label | default: "Website" }} + </a> + </li> + {% endif %} + + {% if author.email %} + <li> + <a href="mailto:{{ author.email }}"> + <meta itemprop="email" content="{{ author.email }}" /> + <i class="fas fa-fw fa-envelope-square" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].email_label | default: "Email" }} + </a> + </li> + {% endif %} + + {% if author.keybase %} + <li> + <a href="https://keybase.io/{{ author.keybase }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fas fa-fw fa-key" aria-hidden="true"></i> Keybase + </a> + </li> + {% endif %} + + {% if author.twitter %} + <li> + <a href="https://twitter.com/{{ author.twitter }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter + </a> + </li> + {% endif %} + + {% if author.facebook %} + <li> + <a href="https://www.facebook.com/{{ author.facebook }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-facebook-square" aria-hidden="true"></i> Facebook + </a> + </li> + {% endif %} + + {% if author.linkedin %} + <li> + <a href="https://www.linkedin.com/in/{{ author.linkedin }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-linkedin" aria-hidden="true"></i> LinkedIn + </a> + </li> + {% endif %} + + {% if author.xing %} + <li> + <a href="https://www.xing.com/profile/{{ author.xing }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-xing-square" aria-hidden="true"></i> XING + </a> + </li> + {% endif %} + + {% if author.instagram %} + <li> + <a href="https://instagram.com/{{ author.instagram }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-instagram" aria-hidden="true"></i> Instagram + </a> + </li> + {% endif %} + + {% if author.tumblr %} + <li> + <a href="https://{{ author.tumblr }}.tumblr.com" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-tumblr-square" aria-hidden="true"></i> Tumblr + </a> + </li> + {% endif %} + + {% if author.bitbucket %} + <li> + <a href="https://bitbucket.org/{{ author.bitbucket }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-bitbucket" aria-hidden="true"></i> Bitbucket + </a> + </li> + {% endif %} + + {% if author.github %} + <li> + <a href="https://github.com/{{ author.github }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-github" aria-hidden="true"></i> GitHub + </a> + </li> + {% endif %} + + {% if author.gitlab %} + <li> + <a href="https://gitlab.com/{{ author.gitlab }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-gitlab" aria-hidden="true"></i> GitLab + </a> + </li> + {% endif %} + + {% if author.stackoverflow %} + <li> + <a href="https://stackoverflow.com/users/{{ author.stackoverflow }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-stack-overflow" aria-hidden="true"></i> Stack Overflow + </a> + </li> + {% endif %} + + {% if author.lastfm %} + <li> + <a href="https://last.fm/user/{{ author.lastfm }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-lastfm-square" aria-hidden="true"></i> Last.fm + </a> + </li> + {% endif %} + + {% if author.dribbble %} + <li> + <a href="https://dribbble.com/{{ author.dribbble }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-dribbble" aria-hidden="true"></i> Dribbble + </a> + </li> + {% endif %} + + {% if author.pinterest %} + <li> + <a href="https://www.pinterest.com/{{ author.pinterest }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-pinterest" aria-hidden="true"></i> Pinterest + </a> + </li> + {% endif %} + + {% if author.foursquare %} + <li> + <a href="https://foursquare.com/{{ author.foursquare }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-foursquare" aria-hidden="true"></i> Foursquare + </a> + </li> + {% endif %} + + {% if author.steam %} + <li> + <a href="https://steamcommunity.com/id/{{ author.steam }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-steam" aria-hidden="true"></i> Steam + </a> + </li> + {% endif %} + + {% if author.youtube %} + {% if author.youtube contains "://" %} + <li> + <a href="{{ author.youtube }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-youtube" aria-hidden="true"></i> YouTube + </a> + </li> + {% else author.youtube %} + <li> + <a href="https://www.youtube.com/user/{{ author.youtube }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-youtube" aria-hidden="true"></i> YouTube + </a> + </li> + {% endif %} + {% endif %} + + {% if author.soundcloud %} + <li> + <a href="https://soundcloud.com/{{ author.soundcloud }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-soundcloud" aria-hidden="true"></i> SoundCloud + </a> + </li> + {% endif %} + + {% if author.weibo %} + <li> + <a href="https://www.weibo.com/{{ author.weibo }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-weibo" aria-hidden="true"></i> Weibo + </a> + </li> + {% endif %} + + {% if author.flickr %} + <li> + <a href="https://www.flickr.com/{{ author.flickr }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-flickr" aria-hidden="true"></i> Flickr + </a> + </li> + {% endif %} + + {% if author.codepen %} + <li> + <a href="https://codepen.io/{{ author.codepen }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-codepen" aria-hidden="true"></i> CodePen + </a> + </li> + {% endif %} + + {% if author.vine %} + <li> + <a href="https://vine.co/u/{{ author.vine }}" itemprop="sameAs" rel="nofollow noopener noreferrer"> + <i class="fab fa-fw fa-vine" aria-hidden="true"></i> Vine + </a> + </li> + {% endif %} + + {% include author-profile-custom-links.html %} + </ul> + </div> +</div> diff --git a/_includes/breadcrumbs.html b/_includes/breadcrumbs.html new file mode 100644 index 0000000..cba3d41 --- /dev/null +++ b/_includes/breadcrumbs.html @@ -0,0 +1,39 @@ +{% case site.category_archive.type %} + {% when "liquid" %} + {% assign path_type = "#" %} + {% when "jekyll-archives" %} + {% assign path_type = nil %} +{% endcase %} + +{% if page.collection != 'posts' %} + {% assign path_type = nil %} + {% assign crumb_path = '/' %} +{% else %} + {% assign crumb_path = site.category_archive.path %} +{% endif %} + +<nav class="breadcrumbs"> + <ol itemscope itemtype="https://schema.org/BreadcrumbList"> + {% assign crumbs = page.url | split: '/' %} + {% assign i = 1 %} + {% for crumb in crumbs offset: 1 %} + {% if forloop.first %} + <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> + <a href="{{ site.url }}{{ site.baseurl }}/" itemprop="item"><span itemprop="name">{{ site.data.ui-text[site.locale].breadcrumb_home_label | default: "Home" }}</span></a> + <meta itemprop="position" content="{{ i }}" /> + </li> + <span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span> + {% endif %} + {% if forloop.last %} + <li class="current">{{ page.title }}</li> + {% else %} + {% assign i = i | plus: 1 %} + <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> + <a href="{{ crumb | downcase | replace: '%20', '-' | prepend: path_type | prepend: crumb_path | relative_url }}" itemprop="item"><span itemprop="name">{{ crumb | replace: '-', ' ' | replace: '%20', ' ' | capitalize }}</span></a> + <meta itemprop="position" content="{{ i }}" /> + </li> + <span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span> + {% endif %} + {% endfor %} + </ol> +</nav> diff --git a/_includes/browser-upgrade.html b/_includes/browser-upgrade.html new file mode 100644 index 0000000..ec6ad0a --- /dev/null +++ b/_includes/browser-upgrade.html @@ -0,0 +1,3 @@ +<!--[if lt IE 9]> +<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="https://browsehappy.com/">upgrade your browser</a> to improve your experience.</div> +<![endif]--> diff --git a/_includes/category-list.html b/_includes/category-list.html new file mode 100644 index 0000000..d684a28 --- /dev/null +++ b/_includes/category-list.html @@ -0,0 +1,26 @@ +{% case site.category_archive.type %} + {% when "liquid" %} + {% assign path_type = "#" %} + {% when "jekyll-archives" %} + {% assign path_type = nil %} +{% endcase %} + +{% if site.category_archive.path %} + {% comment %} + <!-- Sort alphabetically regardless of case e.g. a B c d E --> + <!-- modified from http://www.codeofclimber.ru/2015/sorting-site-tags-in-jekyll/ --> + {% endcomment %} + {% capture page_categories %}{% for category in page.categories %}{{ category | downcase }}|{{ category }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %} + {% assign category_hashes = page_categories | split: ',' | sort %} + + <p class="page__taxonomy"> + <strong><i class="fas fa-fw fa-folder-open" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].categories_label | default: "Categories:" }} </strong> + <span itemprop="keywords"> + {% for hash in category_hashes %} + {% assign keyValue = hash | split: '|' %} + {% capture category_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %} + <a href="{{ category_word | slugify | prepend: path_type | prepend: site.category_archive.path | relative_url }}" class="page__taxonomy-item" rel="tag">{{ category_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %} + {% endfor %} + </span> + </p> +{% endif %}
\ No newline at end of file diff --git a/_includes/comment.html b/_includes/comment.html new file mode 100644 index 0000000..cebedab --- /dev/null +++ b/_includes/comment.html @@ -0,0 +1,22 @@ +<article id="comment{{ include.index }}" class="js-comment comment" itemprop="comment" itemscope itemtype="https://schema.org/Comment"> + <div class="comment__avatar-wrapper"> + <img class="comment__avatar" src="https://www.gravatar.com/avatar/{{ include.email }}?d=mm&s=80" alt="{{ include.name }}"> + </div> + <div class="comment__content-wrapper"> + <h3 class="comment__author" itemprop="author" itemscope itemtype="https://schema.org/Person"> + {% unless include.url == blank %} + <span itemprop="name"><a rel="external nofollow" itemprop="url" href="{{ include.url }}">{{ include.name }}</a></span> + {% else %} + <span itemprop="name">{{ include.name }}</span> + {% endunless %} + </h3> + <p class="comment__date"> + {% if include.date %} + {% if include.index %}<a href="#comment{{ include.index }}" itemprop="url">{% endif %} + <time datetime="{{ include.date | date_to_xmlschema }}" itemprop="datePublished">{{ include.date | date: "%B %d, %Y at %I:%M %p" }}</time> + {% if include.index %}</a>{% endif %} + {% endif %} + </p> + <div itemprop="text">{{ include.message | markdownify }}</div> + </div> +</article> diff --git a/_includes/comments-providers/custom.html b/_includes/comments-providers/custom.html new file mode 100644 index 0000000..9099369 --- /dev/null +++ b/_includes/comments-providers/custom.html @@ -0,0 +1,3 @@ +<!-- start custom comments snippet --> + +<!-- end custom comments snippet -->
\ No newline at end of file diff --git a/_includes/comments-providers/discourse.html b/_includes/comments-providers/discourse.html new file mode 100644 index 0000000..aca62cc --- /dev/null +++ b/_includes/comments-providers/discourse.html @@ -0,0 +1,13 @@ +{% if site.comments.discourse.server %} +{% capture canonical %}{% if site.permalink contains '.html' %}{{ page.url | absolute_url }}{% else %}{{ page.url | absolute_url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %} +<script type="text/javascript"> + DiscourseEmbed = { discourseUrl: '//{{ site.comments.discourse.server }}/', + discourseEmbedUrl: '{{ canonical }}' }; + (function () { + var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true; + d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js'; + (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d); + })(); +</script> +<noscript>Please enable JavaScript to view the comments powered by <a href="https://www.discourse.org/">Discourse.</a></noscript> +{% endif %} diff --git a/_includes/comments-providers/disqus.html b/_includes/comments-providers/disqus.html new file mode 100644 index 0000000..8cf7aca --- /dev/null +++ b/_includes/comments-providers/disqus.html @@ -0,0 +1,15 @@ +{% if site.comments.disqus.shortname %} + <script> + var disqus_config = function () { + this.page.url = "{{ page.url | absolute_url }}"; // Replace PAGE_URL with your page's canonical URL variable + this.page.identifier = "{{ page.id }}"; // Replace PAGE_IDENTIFIER with your page's unique identifier variable + }; + (function() { // DON'T EDIT BELOW THIS LINE + var d = document, s = d.createElement('script'); + s.src = 'https://{{ site.comments.disqus.shortname }}.disqus.com/embed.js'; + s.setAttribute('data-timestamp', +new Date()); + (d.head || d.body).appendChild(s); + })(); + </script> +<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> +{% endif %} diff --git a/_includes/comments-providers/facebook.html b/_includes/comments-providers/facebook.html new file mode 100644 index 0000000..009dc1c --- /dev/null +++ b/_includes/comments-providers/facebook.html @@ -0,0 +1,8 @@ +<div id="fb-root"></div> +<script>(function(d, s, id) { + var js, fjs = d.getElementsByTagName(s)[0]; + if (d.getElementById(id)) return; + js = d.createElement(s); js.id = id; + js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.5{% if site.comments.facebook.appid %}&appId={{ site.comments.facebook.appid }}{% endif %}"; + fjs.parentNode.insertBefore(js, fjs); +}(document, 'script', 'facebook-jssdk'));</script>
\ No newline at end of file diff --git a/_includes/comments-providers/scripts.html b/_includes/comments-providers/scripts.html new file mode 100644 index 0000000..4e3f585 --- /dev/null +++ b/_includes/comments-providers/scripts.html @@ -0,0 +1,18 @@ +{% if site.comments.provider and page.comments %} +{% case site.comments.provider %} + {% when "disqus" %} + {% include /comments-providers/disqus.html %} + {% when "discourse" %} + {% include /comments-providers/discourse.html %} + {% when "facebook" %} + {% include /comments-providers/facebook.html %} + {% when "staticman" %} + {% include /comments-providers/staticman.html %} + {% when "staticman_v2" %} + {% include /comments-providers/staticman_v2.html %} + {% when "utterances" %} + {% include /comments-providers/utterances.html %} + {% when "custom" %} + {% include /comments-providers/custom.html %} +{% endcase %} +{% endif %}
\ No newline at end of file diff --git a/_includes/comments-providers/staticman.html b/_includes/comments-providers/staticman.html new file mode 100644 index 0000000..ae3991d --- /dev/null +++ b/_includes/comments-providers/staticman.html @@ -0,0 +1,40 @@ +{% if site.repository and site.staticman.branch %} + <script> + (function ($) { + $('#new_comment').submit(function () { + var form = this; + + $(form).addClass('disabled'); + $('#comment-form-submit').html('<i class="fas fa-spinner fa-spin fa-fw"></i> {{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }}'); + + $.ajax({ + type: $(this).attr('method'), + url: $(this).attr('action'), + data: $(this).serialize(), + contentType: 'application/x-www-form-urlencoded', + success: function (data) { + $('#comment-form-submit').html('{{ site.data.ui-text[site.locale].comment_btn_submitted | default: "Submitted" }}'); + $('.page__comments-form .js-notice').removeClass('notice--danger'); + $('.page__comments-form .js-notice').addClass('notice--success'); + showAlert('{{ site.data.ui-text[site.locale].comment_success_msg | default: "Thanks for your comment! It will show on the site once it has been approved." }}'); + }, + error: function (err) { + console.log(err); + $('#comment-form-submit').html('{{ site.data.ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}'); + $('.page__comments-form .js-notice').removeClass('notice--success'); + $('.page__comments-form .js-notice').addClass('notice--danger'); + showAlert('{{ site.data.ui-text[site.locale].comment_error_msg | default: "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again." }}'); + $(form).removeClass('disabled'); + } + }); + + return false; + }); + + function showAlert(message) { + $('.page__comments-form .js-notice').removeClass('hidden'); + $('.page__comments-form .js-notice-text').html(message); + } + })(jQuery); + </script> +{% endif %} diff --git a/_includes/comments-providers/staticman_v2.html b/_includes/comments-providers/staticman_v2.html new file mode 100644 index 0000000..ae3991d --- /dev/null +++ b/_includes/comments-providers/staticman_v2.html @@ -0,0 +1,40 @@ +{% if site.repository and site.staticman.branch %} + <script> + (function ($) { + $('#new_comment').submit(function () { + var form = this; + + $(form).addClass('disabled'); + $('#comment-form-submit').html('<i class="fas fa-spinner fa-spin fa-fw"></i> {{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }}'); + + $.ajax({ + type: $(this).attr('method'), + url: $(this).attr('action'), + data: $(this).serialize(), + contentType: 'application/x-www-form-urlencoded', + success: function (data) { + $('#comment-form-submit').html('{{ site.data.ui-text[site.locale].comment_btn_submitted | default: "Submitted" }}'); + $('.page__comments-form .js-notice').removeClass('notice--danger'); + $('.page__comments-form .js-notice').addClass('notice--success'); + showAlert('{{ site.data.ui-text[site.locale].comment_success_msg | default: "Thanks for your comment! It will show on the site once it has been approved." }}'); + }, + error: function (err) { + console.log(err); + $('#comment-form-submit').html('{{ site.data.ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}'); + $('.page__comments-form .js-notice').removeClass('notice--success'); + $('.page__comments-form .js-notice').addClass('notice--danger'); + showAlert('{{ site.data.ui-text[site.locale].comment_error_msg | default: "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again." }}'); + $(form).removeClass('disabled'); + } + }); + + return false; + }); + + function showAlert(message) { + $('.page__comments-form .js-notice').removeClass('hidden'); + $('.page__comments-form .js-notice-text').html(message); + } + })(jQuery); + </script> +{% endif %} diff --git a/_includes/comments-providers/utterances.html b/_includes/comments-providers/utterances.html new file mode 100644 index 0000000..129ab77 --- /dev/null +++ b/_includes/comments-providers/utterances.html @@ -0,0 +1,20 @@ +<script> + 'use strict'; + + (function() { + var commentContainer = document.querySelector('#utterances-comments'); + + if (!commentContainer) { + return; + } + + var script = document.createElement('script'); + script.setAttribute('src', 'https://utteranc.es/client.js'); + script.setAttribute('repo', '{{ site.repository }}'); + script.setAttribute('issue-term', '{{ site.comments.utterances.issue_term | default: "pathname" }}'); + script.setAttribute('theme', '{{ site.comments.utterances.theme | default: "github-light" }}'); + script.setAttribute('crossorigin', 'anonymous'); + + commentContainer.appendChild(script); + })(); +</script> diff --git a/_includes/comments.html b/_includes/comments.html new file mode 100644 index 0000000..40b0359 --- /dev/null +++ b/_includes/comments.html @@ -0,0 +1,159 @@ +<div class="page__comments"> + {% capture comments_label %}{{ site.data.ui-text[site.locale].comments_label | default: "Comments" }}{% endcapture %} + {% case site.comments.provider %} + {% when "discourse" %} + <h4 class="page__comments-title">{{ comments_label }}</h4> + <section id="discourse-comments"></section> + {% when "disqus" %} + <h4 class="page__comments-title">{{ comments_label }}</h4> + <section id="disqus_thread"></section> + {% when "facebook" %} + <h4 class="page__comments-title">{{ comments_label }}</h4> + <section class="fb-comments" data-href="{{ page.url | absolute_url }}" data-mobile="true" data-num-posts="{{ site.comments.facebook.num_posts | default: 5 }}" data-width="100%" data-colorscheme="{{ site.comments.facebook.colorscheme | default: 'light' }}"></section> + {% when "staticman_v2" %} + <section id="static-comments"> + {% if site.repository and site.staticman.branch %} + <!-- Start static comments --> + <div class="js-comments"> + {% if site.data.comments[page.slug] %} + <h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_title | default: "Comments" }}</h4> + {% assign comments = site.data.comments[page.slug] | sort %} + + {% for comment in comments %} + {% assign email = comment[1].email %} + {% assign name = comment[1].name %} + {% assign url = comment[1].url %} + {% assign date = comment[1].date %} + {% assign message = comment[1].message %} + {% include comment.html index=forloop.index email=email name=name url=url date=date message=message %} + {% endfor %} + {% endif %} + </div> + <!-- End static comments --> + + <!-- Start new comment form --> + <div class="page__comments-form"> + <h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_label | default: "Leave a Comment" }}</h4> + <p class="small">{{ site.data.ui-text[site.locale].comment_form_info | default: "Your email address will not be published. Required fields are marked" }} <span class="required">*</span></p> + <form id="new_comment" class="page__comments-form js-form form" method="post" action="{{ site.staticman.endpoint | default: 'https://api.staticman.net/v2/entry/' }}{{ site.repository }}/{{ site.staticman.branch }}/comments"> + <div class="form__spinner"> + <i class="fas fa-spinner fa-spin fa-3x fa-fw"></i> + <span class="sr-only">{{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }}</span> + </div> + + <div class="form-group"> + <label for="comment-form-message">{{ site.data.ui-text[site.locale].comment_form_comment_label | default: "Comment" }} <small class="required">*</small></label> + <textarea type="text" rows="3" id="comment-form-message" name="fields[message]" tabindex="1"></textarea> + <div class="small help-block"><a href="https://daringfireball.net/projects/markdown/">{{ site.data.ui-text[site.locale].comment_form_md_info | default: "Markdown is supported." }}</a></div> + </div> + <div class="form-group"> + <label for="comment-form-name">{{ site.data.ui-text[site.locale].comment_form_name_label | default: "Name" }} <small class="required">*</small></label> + <input type="text" id="comment-form-name" name="fields[name]" tabindex="2" /> + </div> + <div class="form-group"> + <label for="comment-form-email">{{ site.data.ui-text[site.locale].comment_form_email_label | default: "Email address" }} <small class="required">*</small></label> + <input type="email" id="comment-form-email" name="fields[email]" tabindex="3" /> + </div> + <div class="form-group"> + <label for="comment-form-url">{{ site.data.ui-text[site.locale].comment_form_website_label | default: "Website (optional)" }}</label> + <input type="url" id="comment-form-url" name="fields[url]" tabindex="4"/> + </div> + <div class="form-group hidden" style="display: none;"> + <input type="hidden" name="options[slug]" value="{{ page.slug }}"> + <label for="comment-form-location">Not used. Leave blank if you are a human.</label> + <input type="text" id="comment-form-location" name="fields[hidden]" autocomplete="off"/> + {% if site.reCaptcha.siteKey %}<input type="hidden" name="options[reCaptcha][siteKey]" value="{{ site.reCaptcha.siteKey }}">{% endif %} + {% if site.reCaptcha.secret %}<input type="hidden" name="options[reCaptcha][secret]" value="{{ site.reCaptcha.secret }}">{% endif %} + </div> + <!-- Start comment form alert messaging --> + <p class="hidden js-notice"> + <strong class="js-notice-text"></strong> + </p> + <!-- End comment form alert messaging --> + {% if site.reCaptcha.siteKey %} + <div class="form-group"> + <div class="g-recaptcha" data-sitekey="{{ site.reCaptcha.siteKey }}"></div> + </div> + {% endif %} + <div class="form-group"> + <button type="submit" id="comment-form-submit" tabindex="5" class="btn btn--primary btn--large">{{ site.data.ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}</button> + </div> + </form> + </div> + <!-- End new comment form --> + {% if site.reCaptcha.siteKey %}<script async src="https://www.google.com/recaptcha/api.js"></script>{% endif %} + {% endif %} + </section> + {% when "staticman" %} + <section id="static-comments"> + {% if site.repository and site.staticman.branch %} + <!-- Start static comments --> + <div class="js-comments"> + {% if site.data.comments[page.slug] %} + <h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_title | default: "Comments" }}</h4> + {% assign comments = site.data.comments[page.slug] | sort %} + + {% for comment in comments %} + {% assign email = comment[1].email %} + {% assign name = comment[1].name %} + {% assign url = comment[1].url %} + {% assign date = comment[1].date %} + {% assign message = comment[1].message %} + {% include comment.html index=forloop.index email=email name=name url=url date=date message=message %} + {% endfor %} + {% endif %} + </div> + <!-- End static comments --> + + <!-- Start new comment form --> + <div class="page__comments-form"> + <h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_label | default: "Leave a Comment" }}</h4> + <p class="small">{{ site.data.ui-text[site.locale].comment_form_info | default: "Your email address will not be published. Required fields are marked" }} <span class="required">*</span></p> + <form id="new_comment" class="page__comments-form js-form form" method="post" action="https://api.staticman.net/v1/entry/{{ site.repository }}/{{ site.staticman.branch }}"> + <div class="form__spinner"> + <i class="fas fa-spinner fa-spin fa-3x fa-fw"></i> + <span class="sr-only">{{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }}</span> + </div> + + <div class="form-group"> + <label for="comment-form-message">{{ site.data.ui-text[site.locale].comment_form_comment_label | default: "Comment" }} <small class="required">*</small></label> + <textarea type="text" rows="3" id="comment-form-message" name="fields[message]" tabindex="1"></textarea> + <div class="small help-block"><a href="https://daringfireball.net/projects/markdown/">{{ site.data.ui-text[site.locale].comment_form_md_info | default: "Markdown is supported." }}</a></div> + </div> + <div class="form-group"> + <label for="comment-form-name">{{ site.data.ui-text[site.locale].comment_form_name_label | default: "Name" }} <small class="required">*</small></label> + <input type="text" id="comment-form-name" name="fields[name]" tabindex="2" /> + </div> + <div class="form-group"> + <label for="comment-form-email">{{ site.data.ui-text[site.locale].comment_form_email_label | default: "Email address" }} <small class="required">*</small></label> + <input type="email" id="comment-form-email" name="fields[email]" tabindex="3" /> + </div> + <div class="form-group"> + <label for="comment-form-url">{{ site.data.ui-text[site.locale].comment_form_website_label | default: "Website (optional)" }}</label> + <input type="url" id="comment-form-url" name="fields[url]" tabindex="4"/> + </div> + <div class="form-group hidden" style="display: none;"> + <input type="hidden" name="options[slug]" value="{{ page.slug }}"> + <label for="comment-form-location">Not used. Leave blank if you are a human.</label> + <input type="text" id="comment-form-location" name="fields[hidden]" autocomplete="off"/> + </div> + <!-- Start comment form alert messaging --> + <p class="hidden js-notice"> + <strong class="js-notice-text"></strong> + </p> + <!-- End comment form alert messaging --> + <div class="form-group"> + <button type="submit" id="comment-form-submit" tabindex="5" class="btn btn--primary btn--large">{{ site.data.ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}</button> + </div> + </form> + </div> + <!-- End new comment form --> + {% endif %} + </section> + {% when "utterances" %} + <h4 class="page__comments-title">{{ comments_label }}</h4> + <section id="utterances-comments"></section> + {% when "custom" %} + <section id="custom-comments"></section> + {% endcase %} +</div> diff --git a/_includes/documents-collection.html b/_includes/documents-collection.html new file mode 100644 index 0000000..13b4006 --- /dev/null +++ b/_includes/documents-collection.html @@ -0,0 +1,19 @@ +{% assign entries = site[include.collection] %} + +{% if include.sort_by == 'title' %} + {% if include.sort_order == 'reverse' %} + {% assign entries = entries | sort: 'title' | reverse %} + {% else %} + {% assign entries = entries | sort: 'title' %} + {% endif %} +{% elsif include.sort_by == 'date' %} + {% if include.sort_order == 'reverse' %} + {% assign entries = entries | sort: 'date' | reverse %} + {% else %} + {% assign entries = entries | sort: 'date' %} + {% endif %} +{% endif %} + +{%- for post in entries -%} + {% include archive-single.html %} +{%- endfor -%} diff --git a/_includes/feature_row b/_includes/feature_row new file mode 100644 index 0000000..89dfc1b --- /dev/null +++ b/_includes/feature_row @@ -0,0 +1,53 @@ +{% if include.id %} + {% assign feature_row = page[include.id] %} +{% else %} + {% assign feature_row = page.feature_row %} +{% endif %} + +<div class="feature__wrapper"> + + {% for f in feature_row %} + + {% if f.url contains "://" %} + {% capture f_url %}{{ f.url }}{% endcapture %} + {% else %} + {% capture f_url %}{{ f.url | relative_url }}{% endcapture %} + {% endif %} + + <div class="feature__item{% if include.type %}--{{ include.type }}{% endif %}"> + <div class="archive__item"> + {% if f.image_path %} + <div class="archive__item-teaser"> + <img src= + {% if f.image_path contains "://" %} + "{{ f.image_path }}" + {% else %} + "{{ f.image_path | relative_url }}" + {% endif %} + alt="{% if f.alt %}{{ f.alt }}{% endif %}"> + {% if f.image_caption %} + <span class="archive__item-caption">{{ f.image_caption | markdownify | remove: "<p>" | remove: "</p>" }}</span> + {% endif %} + </div> + {% endif %} + + <div class="archive__item-body"> + {% if f.title %} + <h2 class="archive__item-title">{{ f.title }}</h2> + {% endif %} + + {% if f.excerpt %} + <div class="archive__item-excerpt"> + {{ f.excerpt | markdownify }} + </div> + {% endif %} + + {% if f.url %} + <p><a href="{{ f_url }}" class="btn {{ f.btn_class }}">{{ f.btn_label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a></p> + {% endif %} + </div> + </div> + </div> + {% endfor %} + +</div>
\ No newline at end of file diff --git a/_includes/figure b/_includes/figure new file mode 100644 index 0000000..8e9bdd5 --- /dev/null +++ b/_includes/figure @@ -0,0 +1,12 @@ +<figure class="{{ include.class }}"> + <img src= + {% if include.image_path contains "://" %} + "{{ include.image_path }}" + {% else %} + "{{ include.image_path | relative_url }}" + {% endif %} + alt="{% if include.alt %}{{ include.alt }}{% endif %}"> + {% if include.caption %} + <figcaption> + {{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }} + </figcaption>{% endif %}</figure> diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 0000000..2bc7896 --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,19 @@ +<div class="page__footer-follow"> + <ul class="social-icons"> + {% if site.data.ui-text[site.locale].follow_label %} + <li><strong>{{ site.data.ui-text[site.locale].follow_label }}</strong></li> + {% endif %} + + {% if site.footer.links %} + {% for link in site.footer.links %} + {% if link.label and link.url %} + <li><a href="{{ link.url }}" rel="nofollow noopener noreferrer"><i class="{{ link.icon | default: 'fas fa-link' }}" aria-hidden="true"></i> {{ link.label }}</a></li> + {% endif %} + {% endfor %} + {% endif %} + + <li><a href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}"><i class="fas fa-fw fa-rss-square" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].feed_label | default: "Feed" }}</a></li> + </ul> +</div> + +<div class="page__footer-copyright">© {{ site.time | date: '%Y' }} {{ site.name | default: site.title }}. {{ site.data.ui-text[site.locale].powered_by | default: "Powered by" }} <a href="https://jekyllrb.com" rel="nofollow">Jekyll</a> & <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div> diff --git a/_includes/footer/custom.html b/_includes/footer/custom.html new file mode 100644 index 0000000..d512599 --- /dev/null +++ b/_includes/footer/custom.html @@ -0,0 +1,3 @@ +<!-- start custom footer snippets --> + +<!-- end custom footer snippets -->
\ No newline at end of file diff --git a/_includes/gallery b/_includes/gallery new file mode 100644 index 0000000..97022aa --- /dev/null +++ b/_includes/gallery @@ -0,0 +1,51 @@ +{% if include.id %} + {% assign gallery = page[include.id] %} +{% else %} + {% assign gallery = page.gallery %} +{% endif %} + +{% if include.layout %} + {% assign gallery_layout = include.layout %} +{% else %} + {% if gallery.size == 2 %} + {% assign gallery_layout = 'half' %} + {% elsif gallery.size >= 3 %} + {% assign gallery_layout = 'third' %} + {% else %} + {% assign gallery_layout = '' %} + {% endif %} +{% endif %} + +<figure class="{{ gallery_layout }} {{ include.class }}"> + {% for img in gallery %} + {% if img.url %} + <a href= + {% if img.url contains "://" %} + "{{ img.url }}" + {% else %} + "{{ img.url | relative_url }}" + {% endif %} + {% if img.title %}title="{{ img.title }}"{% endif %} + > + <img src= + {% if img.image_path contains "://" %} + "{{ img.image_path }}" + {% else %} + "{{ img.image_path | relative_url }}" + {% endif %} + alt="{% if img.alt %}{{ img.alt }}{% endif %}"> + </a> + {% else %} + <img src= + {% if img.image_path contains "://" %} + "{{ img.image_path }}" + {% else %} + "{{ img.image_path | relative_url }}" + {% endif %} + alt="{% if img.alt %}{{ img.alt }}{% endif %}"> + {% endif %} + {% endfor %} + {% if include.caption %} + <figcaption>{{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }}</figcaption> + {% endif %} +</figure>
\ No newline at end of file diff --git a/_includes/group-by-array b/_includes/group-by-array new file mode 100644 index 0000000..708de41 --- /dev/null +++ b/_includes/group-by-array @@ -0,0 +1,47 @@ +<!-- +# Jekyll Group-By-Array 0.1.0 +# https://github.com/mushishi78/jekyll-group-by-array +# © 2015 Max White <mushishi78@gmail.com> +# MIT License +--> + +<!-- Initialize --> +{% assign __empty_array = '' | split: ',' %} +{% assign group_names = __empty_array %} +{% assign group_items = __empty_array %} + +<!-- Map --> +{% assign __names = include.collection | map: include.field %} + +<!-- Flatten --> +{% assign __names = __names | join: ',' | join: ',' | split: ',' %} + +<!-- Uniq --> +{% assign __names = __names | sort %} +{% for name in __names %} + +<!-- If not equal to previous then it must be unique as sorted --> +{% unless name == previous %} + +<!-- Push to group_names --> +{% assign group_names = group_names | push: name %} +{% endunless %} + +{% assign previous = name %} +{% endfor %} + + +<!-- group_items --> +{% for name in group_names %} + +<!-- Collect if contains --> +{% assign __item = __empty_array %} +{% for __element in include.collection %} +{% if __element[include.field] contains name %} +{% assign __item = __item | push: __element %} +{% endif %} +{% endfor %} + +<!-- Push to group_items --> +{% assign group_items = group_items | push: __item %} +{% endfor %}
\ No newline at end of file diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 0000000..8963379 --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,41 @@ +<meta charset="utf-8"> + +{% include seo.html %} + +<link href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | relative_url }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ site.title }} Feed"> + +<!-- https://t.co/dKP3o1e --> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<script> + document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js '; +</script> + +<!-- For all browsers --> +<link rel="stylesheet" href="{{ '/assets/css/main.css' | relative_url }}"> + +<!--[if IE]> + <style> + /* old IE unsupported flexbox fixes */ + .greedy-nav .site-title { + padding-right: 3em; + } + .greedy-nav button { + position: absolute; + top: 0; + right: 0; + height: 100%; + } + </style> +<![endif]--> + +{% if site.head_scripts %} + {% for script in site.head_scripts %} + {% if script contains "://" %} + {% capture script_path %}{{ script }}{% endcapture %} + {% else %} + {% capture script_path %}{{ script | relative_url }}{% endcapture %} + {% endif %} + <script src="{{ script_path }}"></script> + {% endfor %} +{% endif %} diff --git a/_includes/head/custom.html b/_includes/head/custom.html new file mode 100644 index 0000000..978d84f --- /dev/null +++ b/_includes/head/custom.html @@ -0,0 +1,5 @@ +<!-- start custom head snippets --> + +<!-- insert favicons. use https://realfavicongenerator.net/ --> + +<!-- end custom head snippets --> diff --git a/_includes/masthead.html b/_includes/masthead.html new file mode 100644 index 0000000..3fe9fc1 --- /dev/null +++ b/_includes/masthead.html @@ -0,0 +1,46 @@ +{% if site.logo contains "://" %} + {% capture logo_path %}{{ site.logo }}{% endcapture %} +{% else %} + {% capture logo_path %}{{ site.logo }}{% endcapture %} +{% endif %} + +<div class="masthead"> + <div class="masthead__inner-wrap"> + <div class="masthead__menu"> + <nav id="site-nav" class="greedy-nav"> + {% unless logo_path == empty %} + <a class="site-logo" href="{{ '/' | relative_url }}"><img src="{{ logo_path | relative_url }}" alt=""></a> + {% endunless %} + <a class="site-title" href="{{ '/' | relative_url }}"> + {{ site.masthead_title | default: site.title }} + {% if site.subtitle %}<span class="site-subtitle">{{ site.subtitle }}</span>{% endif %} + </a> + <ul class="visible-links"> + {%- for link in site.data.navigation.main -%} + {%- if link.url contains '://' -%} + {%- assign url = link.url -%} + {%- else -%} + {%- assign url = link.url | relative_url -%} + {%- endif -%} + <li class="masthead__menu-item"> + <a href="{{ url }}" {% if link.description %}title="{{ link.description }}"{% endif %}>{{ link.title }}</a> + </li> + {%- endfor -%} + </ul> + {% if site.search == true %} + <button class="search__toggle" type="button"> + <span class="visually-hidden">{{ site.data.ui-text[site.locale].search_label | default: "Toggle search" }}</span> + <svg class="icon" width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15.99 16"> + <path d="M15.5,13.12L13.19,10.8a1.69,1.69,0,0,0-1.28-.55l-0.06-.06A6.5,6.5,0,0,0,5.77,0,6.5,6.5,0,0,0,2.46,11.59a6.47,6.47,0,0,0,7.74.26l0.05,0.05a1.65,1.65,0,0,0,.5,1.24l2.38,2.38A1.68,1.68,0,0,0,15.5,13.12ZM6.4,2A4.41,4.41,0,1,1,2,6.4,4.43,4.43,0,0,1,6.4,2Z" transform="translate(-.01)"></path> + </svg> + </button> + {% endif %} + <button class="greedy-nav__toggle hidden" type="button"> + <span class="visually-hidden">{{ site.data.ui-text[site.locale].menu_label | default: "Toggle menu" }}</span> + <div class="navicon"></div> + </button> + <ul class="hidden-links hidden"></ul> + </nav> + </div> + </div> +</div> diff --git a/_includes/nav_list b/_includes/nav_list new file mode 100644 index 0000000..b1d06c3 --- /dev/null +++ b/_includes/nav_list @@ -0,0 +1,47 @@ +{% assign navigation = site.data.navigation[include.nav] %} + +<nav class="nav__list"> + {% if page.sidebar.title %}<h3 class="nav__title" style="padding-left: 0;">{{ page.sidebar.title }}</h3>{% endif %} + <input id="ac-toc" name="accordion-toc" type="checkbox" /> + <label for="ac-toc">{{ site.data.ui-text[site.locale].menu_label | default: "Toggle Menu" }}</label> + <ul class="nav__items"> + {% for nav in navigation %} + <li> + {% if nav.url %} + {% comment %} internal/external URL check {% endcomment %} + {% if nav.url contains "://" %} + {% assign nav_url = nav.url %} + {% else %} + {% assign nav_url = nav.url | relative_url %} + {% endif %} + + <a href="{{ nav_url }}"><span class="nav__sub-title">{{ nav.title }}</span></a> + {% else %} + <span class="nav__sub-title">{{ nav.title }}</span> + {% endif %} + + {% if nav.children != null %} + <ul> + {% for child in nav.children %} + {% comment %} internal/external URL check {% endcomment %} + {% if child.url contains "://" %} + {% assign child_url = child.url %} + {% else %} + {% assign child_url = child.url | relative_url %} + {% endif %} + + {% comment %} set "active" class on current page {% endcomment %} + {% if child.url == page.url %} + {% assign active = "active" %} + {% else %} + {% assign active = "" %} + {% endif %} + + <li><a href="{{ child_url }}" class="{{ active }}">{{ child.title }}</a></li> + {% endfor %} + </ul> + {% endif %} + </li> + {% endfor %} + </ul> +</nav>
\ No newline at end of file diff --git a/_includes/page__hero.html b/_includes/page__hero.html new file mode 100644 index 0000000..98bff72 --- /dev/null +++ b/_includes/page__hero.html @@ -0,0 +1,72 @@ +{% if page.header.image contains "://" %} + {% capture img_path %}{{ page.header.image }}{% endcapture %} +{% else %} + {% capture img_path %}{{ page.header.image | relative_url }}{% endcapture %} +{% endif %} + +{% if page.header.cta_url contains "://" %} + {% capture cta_path %}{{ page.header.cta_url }}{% endcapture %} +{% else %} + {% capture cta_path %}{{ page.header.cta_url | relative_url }}{% endcapture %} +{% endif %} + +{% if page.header.overlay_image contains "://" %} + {% capture overlay_img_path %}{{ page.header.overlay_image }}{% endcapture %} +{% elsif page.header.overlay_image %} + {% capture overlay_img_path %}{{ page.header.overlay_image | relative_url }}{% endcapture %} +{% endif %} + +{% if page.header.overlay_filter contains "rgba" %} + {% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %} +{% elsif page.header.overlay_filter %} + {% capture overlay_filter %}rgba(0, 0, 0, {{ page.header.overlay_filter }}){% endcapture %} +{% endif %} + +{% if page.header.image_description %} + {% assign image_description = page.header.image_description %} +{% else %} + {% assign image_description = page.title %} +{% endif %} + +{% assign image_description = image_description | markdownify | strip_html | strip_newlines | escape_once %} + +<div class="page__hero{% if page.header.overlay_color or page.header.overlay_image %}--overlay{% endif %}" + style="{% if page.header.overlay_color %}background-color: {{ page.header.overlay_color | default: 'transparent' }};{% endif %} {% if overlay_img_path %}background-image: {% if overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}), {% endif %}url('{{ overlay_img_path }}');{% endif %}" +> + {% if page.header.overlay_color or page.header.overlay_image %} + <div class="wrapper"> + <h1 id="page-title" class="page__title" itemprop="headline"> + {% if paginator and site.paginate_show_page_num %} + {{ site.title }}{% unless paginator.page == 1 %} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %} + {% else %} + {{ page.title | default: site.title | markdownify | remove: "<p>" | remove: "</p>" }} + {% endif %} + </h1> + {% if page.header.show_overlay_excerpt != false and page.excerpt %} + <p class="page__lead">{{ page.excerpt | markdownify | remove: "<p>" | remove: "</p>" }}</p> + {% endif %} + {% if page.read_time %} + <p class="page__meta"><i class="far fa-clock" aria-hidden="true"></i> {% include read-time.html %}</p> + {% endif %} + {% if page.header.cta_url %} + <p><a href="{{ cta_path }}" class="btn btn--light-outline btn--large">{{ page.header.cta_label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a></p> + {% endif %} + {% if page.header.actions %} + <p> + {% for action in page.header.actions %} + {% if action.url contains "://" %} + {% assign url = action.url %} + {% else %} + {% assign url = action.url | relative_url %} + {% endif %} + <a href="{{ url }}" class="btn btn--light-outline btn--large">{{ action.label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a> + {% endfor %} + {% endif %} + </div> + {% else %} + <img src="{{ img_path }}" alt="{{ image_description }}" class="page__hero-image"> + {% endif %} + {% if page.header.caption %} + <span class="page__hero-caption">{{ page.header.caption | markdownify | remove: "<p>" | remove: "</p>" }}</span> + {% endif %} +</div> diff --git a/_includes/page__hero_video.html b/_includes/page__hero_video.html new file mode 100644 index 0000000..8586a95 --- /dev/null +++ b/_includes/page__hero_video.html @@ -0,0 +1,4 @@ +{% capture video_id %}{{ page.header.video.id }}{% endcapture %} +{% capture video_provider %}{{ page.header.video.provider }}{% endcapture %} + +{% include video id=video_id provider=video_provider %} diff --git a/_includes/page__taxonomy.html b/_includes/page__taxonomy.html new file mode 100644 index 0000000..75c76c8 --- /dev/null +++ b/_includes/page__taxonomy.html @@ -0,0 +1,7 @@ +{% if site.tag_archive.type and page.tags[0] %} + {% include tag-list.html %} +{% endif %} + +{% if site.category_archive.type and page.categories[0] %} + {% include category-list.html %} +{% endif %}
\ No newline at end of file diff --git a/_includes/paginator.html b/_includes/paginator.html new file mode 100644 index 0000000..592a2cf --- /dev/null +++ b/_includes/paginator.html @@ -0,0 +1,69 @@ +{% if paginator.total_pages > 1 %} +<nav class="pagination"> + {% assign first_page_path = site.paginate_path | replace: 'page:num', '' | replace: '//', '/' | relative_url %} + <ul> + {% comment %} Link for previous page {% endcomment %} + {% if paginator.previous_page %} + {% if paginator.previous_page == 1 %} + <li><a href="{{ first_page_path }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li> + {% else %} + <li><a href="{{ site.paginate_path | replace: ':num', paginator.previous_page | replace: '//', '/' | relative_url }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li> + {% endif %} + {% else %} + <li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</span></a></li> + {% endif %} + + {% comment %} First page {% endcomment %} + {% if paginator.page == 1 %} + <li><a href="#" class="disabled current">1</a></li> + {% else %} + <li><a href="{{ first_page_path }}">1</a></li> + {% endif %} + + {% assign page_start = 2 %} + {% if paginator.page > 4 %} + {% assign page_start = paginator.page | minus: 2 %} + {% comment %} Ellipsis for truncated links {% endcomment %} + <li><a href="#" class="disabled">…</a></li> + {% endif %} + + {% assign page_end = paginator.total_pages | minus: 1 %} + {% assign pages_to_end = paginator.total_pages | minus: paginator.page %} + {% if pages_to_end > 4 %} + {% assign page_end = paginator.page | plus: 2 %} + {% endif %} + + {% for index in (page_start..page_end) %} + {% if index == paginator.page %} + <li><a href="{{ site.paginate_path | replace: ':num', index | replace: '//', '/' | relative_url }}" class="disabled current">{{ index }}</a></li> + {% else %} + {% comment %} Distance from current page and this link {% endcomment %} + {% assign dist = paginator.page | minus: index %} + {% if dist < 0 %} + {% comment %} Distance must be a positive value {% endcomment %} + {% assign dist = 0 | minus: dist %} + {% endif %} + <li><a href="{{ site.paginate_path | replace: ':num', index | relative_url }}">{{ index }}</a></li> + {% endif %} + {% endfor %} + + {% comment %} Ellipsis for truncated links {% endcomment %} + {% if pages_to_end > 3 %} + <li><a href="#" class="disabled">…</a></li> + {% endif %} + + {% if paginator.page == paginator.total_pages %} + <li><a href="#" class="disabled current">{{ paginator.page }}</a></li> + {% else %} + <li><a href="{{ site.paginate_path | replace: ':num', paginator.total_pages | replace: '//', '/' | relative_url }}">{{ paginator.total_pages }}</a></li> + {% endif %} + + {% comment %} Link next page {% endcomment %} + {% if paginator.next_page %} + <li><a href="{{ site.paginate_path | replace: ':num', paginator.next_page | replace: '//', '/' | relative_url }}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a></li> + {% else %} + <li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</span></a></li> + {% endif %} + </ul> +</nav> +{% endif %} diff --git a/_includes/post_pagination.html b/_includes/post_pagination.html new file mode 100644 index 0000000..a93c627 --- /dev/null +++ b/_includes/post_pagination.html @@ -0,0 +1,14 @@ +{% if page.previous or page.next %} + <nav class="pagination"> + {% if page.previous %} + <a href="{{ page.previous.url | relative_url }}" class="pagination--pager" title="{{ page.previous.title | markdownify | strip_html }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a> + {% else %} + <a href="#" class="pagination--pager disabled">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a> + {% endif %} + {% if page.next %} + <a href="{{ page.next.url | relative_url }}" class="pagination--pager" title="{{ page.next.title | markdownify | strip_html }}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a> + {% else %} + <a href="#" class="pagination--pager disabled">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a> + {% endif %} + </nav> +{% endif %}
\ No newline at end of file diff --git a/_includes/posts-category.html b/_includes/posts-category.html new file mode 100644 index 0000000..98be3e9 --- /dev/null +++ b/_includes/posts-category.html @@ -0,0 +1,3 @@ +{%- for post in site.categories[include.taxonomy] -%} + {% include archive-single.html %} +{%- endfor -%} diff --git a/_includes/posts-tag.html b/_includes/posts-tag.html new file mode 100644 index 0000000..180a2f3 --- /dev/null +++ b/_includes/posts-tag.html @@ -0,0 +1,3 @@ +{%- for post in site.tags[include.taxonomy] -%} + {% include archive-single.html %} +{%- endfor -%} diff --git a/_includes/read-time.html b/_includes/read-time.html new file mode 100644 index 0000000..5885744 --- /dev/null +++ b/_includes/read-time.html @@ -0,0 +1,15 @@ +{% assign words_per_minute = page.words_per_minute | default: site.words_per_minute | default: 200 %} + +{% if post.read_time %} + {% assign words = post.content | strip_html | number_of_words %} +{% elsif page.read_time %} + {% assign words = page.content | strip_html | number_of_words %} +{% endif %} + +{% if words < words_per_minute %} + {{ site.data.ui-text[site.locale].less_than | default: "less than" }} 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }} +{% elsif words == words_per_minute %} + 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }} +{% else %} + {{ words | divided_by:words_per_minute }} {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }} +{% endif %} diff --git a/_includes/scripts.html b/_includes/scripts.html new file mode 100644 index 0000000..5530028 --- /dev/null +++ b/_includes/scripts.html @@ -0,0 +1,39 @@ +{% if site.footer_scripts %} + {% for script in site.footer_scripts %} + {% if script contains "://" %} + {% capture script_path %}{{ script }}{% endcapture %} + {% else %} + {% capture script_path %}{{ script | relative_url }}{% endcapture %} + {% endif %} + <script src="{{ script_path }}"></script> + {% endfor %} +{% else %} + <script src="{{ '/assets/js/main.min.js' | relative_url }}"></script> + <script src="https://kit.fontawesome.com/4eee35f757.js"></script> +{% endif %} + +{% if site.search == true or page.layout == "search" %} + {%- assign search_provider = site.search_provider | default: "lunr" -%} + {%- case search_provider -%} + {%- when "lunr" -%} + {% include_cached search/lunr-search-scripts.html %} + {%- when "google" -%} + {% include_cached search/google-search-scripts.html %} + {%- when "algolia" -%} + {% include_cached search/algolia-search-scripts.html %} + {%- endcase -%} +{% endif %} + +{% include analytics.html %} +{% include /comments-providers/scripts.html %} + +{% if site.after_footer_scripts %} + {% for script in site.after_footer_scripts %} + {% if script contains "://" %} + {% capture script_path %}{{ script }}{% endcapture %} + {% else %} + {% capture script_path %}{{ script | relative_url }}{% endcapture %} + {% endif %} + <script src="{{ script_path }}"></script> + {% endfor %} +{% endif %} diff --git a/_includes/search/algolia-search-scripts.html b/_includes/search/algolia-search-scripts.html new file mode 100644 index 0000000..a6bc9d2 --- /dev/null +++ b/_includes/search/algolia-search-scripts.html @@ -0,0 +1,54 @@ +<!-- Including InstantSearch.js library and styling --> +<script src="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.js"></script> +<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch.min.css"> +<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/instantsearch.js@2.3.3/dist/instantsearch-theme-algolia.min.css"> + +<script> +// Instanciating InstantSearch.js with Algolia credentials +const search = instantsearch({ + appId: '{{ site.algolia.application_id }}', + apiKey: '{{ site.algolia.search_only_api_key }}', + indexName: '{{ site.algolia.index_name }}', + searchParameters: { + restrictSearchableAttributes: [ + 'title', + 'content' + ] + } +}); + +const hitTemplate = function(hit) { + const url = hit.url; + const title = hit._highlightResult.title.value; + const content = hit._highlightResult.html.value; + + return ` + <div class="list__item"> + <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork"> + <h2 class="archive__item-title" itemprop="headline"><a href="{{ site.baseurl }}${url}">${title}</a></h2> + <div class="archive__item-excerpt" itemprop="description">${content}</div> + </article> + </div> + `; +} + +// Adding searchbar and results widgets +search.addWidget( + instantsearch.widgets.searchBox({ + container: '.search-searchbar', + {% unless site.algolia.powered_by == false %}poweredBy: true,{% endunless %} + placeholder: '{{ site.data.ui-text[site.locale].search_placeholder_text | default: "Enter your search term..." }}' + }) +); +search.addWidget( + instantsearch.widgets.hits({ + container: '.search-hits', + templates: { + item: hitTemplate + } + }) +); + +// Starting the search +search.start(); +</script> diff --git a/_includes/search/google-search-scripts.html b/_includes/search/google-search-scripts.html new file mode 100644 index 0000000..4af7423 --- /dev/null +++ b/_includes/search/google-search-scripts.html @@ -0,0 +1,30 @@ +<script> + (function () { + var cx = '{{ site.google.search_engine_id }}'; + var gcse = document.createElement('script'); + gcse.type = 'text/javascript'; + gcse.async = true; + gcse.src = 'https://cse.google.com/cse.js?cx=' + cx; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(gcse, s); + })(); + + function googleCustomSearchExecute() { + var input = document.getElementById('cse-search-input-box-id'); + var element = google.search.cse.element.getElement('searchresults-only0'); + if (input.value == '') { + element.clearAllResults(); + } else { + element.execute(input.value); + } + return false; + } + + {% if site.google.instant_search %} + $(document).ready(function () { + $('input#cse-search-input-box-id').on('keyup', function () { + googleCustomSearchExecute(); + }); + }); + {% endif %} +</script>
\ No newline at end of file diff --git a/_includes/search/lunr-search-scripts.html b/_includes/search/lunr-search-scripts.html new file mode 100644 index 0000000..574c390 --- /dev/null +++ b/_includes/search/lunr-search-scripts.html @@ -0,0 +1,10 @@ +{% assign lang = site.locale | slice: 0,2 | default: "en" %} +{% case lang %} +{% when "gr" %} + {% assign lang = "gr" %} +{% else %} + {% assign lang = "en" %} +{% endcase %} +<script src="{{ '/assets/js/lunr/lunr.min.js' | relative_url }}"></script> +<script src="{{ '/assets/js/lunr/lunr-store.js' | relative_url }}"></script> +<script src="{{ '/assets/js/lunr/lunr-' | append: lang | append: '.js' | relative_url }}"></script>
\ No newline at end of file diff --git a/_includes/search/search_form.html b/_includes/search/search_form.html new file mode 100644 index 0000000..c346379 --- /dev/null +++ b/_includes/search/search_form.html @@ -0,0 +1,26 @@ +<div class="search-content__inner-wrap"> + {%- assign search_provider = site.search_provider | default: "lunr" -%} + {%- case search_provider -%} + {%- when "lunr" -%} + <form class="search-content__form" onkeydown="return event.key != 'Enter';"> + <label class="sr-only" for="search"> + {{ site.data.ui-text[site.locale].search_label_text | default: 'Enter your search term...' }} + </label> + <input type="search" id="search" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" /> + </form> + <div id="results" class="results"></div> + {%- when "google" -%} + <form onsubmit="return googleCustomSearchExecute();" id="cse-search-box-form-id"> + <label class="sr-only" for="cse-search-input-box-id"> + {{ site.data.ui-text[site.locale].search_label_text | default: 'Enter your search term...' }} + </label> + <input type="search" id="cse-search-input-box-id" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" /> + </form> + <div id="results" class="results"> + <gcse:searchresults-only></gcse:searchresults-only> + </div> + {%- when "algolia" -%} + <div class="search-searchbar"></div> + <div class="search-hits"></div> + {%- endcase -%} +</div> diff --git a/_includes/seo.html b/_includes/seo.html new file mode 100644 index 0000000..ead2d1f --- /dev/null +++ b/_includes/seo.html @@ -0,0 +1,161 @@ +<!-- begin _includes/seo.html --> +{%- if site.url -%} + {%- assign seo_url = site.url | append: site.baseurl -%} +{%- endif -%} +{%- assign seo_url = seo_url | default: site.github.url -%} + +{% assign title_separator = site.title_separator | default: '-' | replace: '|', '|' %} + +{%- if page.title -%} + {%- assign seo_title = page.title | append: " " | append: title_separator | append: " " | append: site.title -%} +{%- endif -%} + +{%- if seo_title -%} + {%- assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once -%} +{%- endif -%} + +{% if page.canonical_url %} + {%- assign canonical_url = page.canonical_url %} +{% else %} + {%- assign canonical_url = page.url | replace: "index.html", "" | absolute_url %} +{% endif %} + +{%- assign seo_description = page.description | default: page.excerpt | default: site.description -%} +{%- if seo_description -%} + {%- assign seo_description = seo_description | markdownify | strip_html | strip_newlines | escape_once -%} +{%- endif -%} + +{%- assign author = page.author | default: page.authors[0] | default: site.author -%} +{%- assign author = site.data.authors[author] | default: author -%} + +{%- if author.twitter -%} + {%- assign author_twitter = author.twitter | replace: "@", "" -%} +{%- endif -%} + +{%- assign page_large_image = page.header.og_image | default: page.header.overlay_image | default: page.header.image -%} +{%- unless page_large_image contains '://' -%} + {%- assign page_large_image = page_large_image | absolute_url -%} +{%- endunless -%} +{%- assign page_large_image = page_large_image | escape -%} + +{%- assign page_teaser_image = page.header.teaser | default: site.og_image -%} +{%- unless page_teaser_image contains '://' -%} + {%- assign page_teaser_image = page_teaser_image | absolute_url -%} +{%- endunless -%} +{%- assign page_teaser_image = page_teaser_image | escape -%} + +{%- assign site_og_image = site.og_image -%} +{%- unless site_og_image contains '://' -%} + {%- assign site_og_image = site_og_image | absolute_url -%} +{%- endunless -%} +{%- assign site_og_image = site_og_image | escape -%} + +{%- if page.date -%} + {%- assign og_type = "article" -%} +{%- else -%} + {%- assign og_type = "website" -%} +{%- endif -%} + +<title>{{ seo_title | default: site.title }}{% if paginator %}{% unless paginator.page == 1 %} {{ title_separator }} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %}</title> +<meta name="description" content="{{ seo_description }}"> + +{% if author.name %} + <meta name="author" content="{{ author.name | default: author }}"> +{% endif %} + +<meta property="og:type" content="{{ og_type }}"> +<meta property="og:locale" content="{{ site.locale | replace: "-", "_" | default: "en_US" }}"> +<meta property="og:site_name" content="{{ site.title }}"> +<meta property="og:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}"> +<meta property="og:url" content="{{ canonical_url }}"> + +{% if page.excerpt %} + <meta property="og:description" content="{{ seo_description }}"> +{% endif %} + +{% if page_large_image %} + <meta property="og:image" content="{{ page_large_image }}"> +{% elsif page_teaser_image %} + <meta property="og:image" content="{{ page_teaser_image }}"> +{% endif %} + +{% if site.twitter.username %} + <meta name="twitter:site" content="@{{ site.twitter.username | replace: "@", "" }}"> + <meta name="twitter:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}"> + <meta name="twitter:description" content="{{ seo_description }}"> + <meta name="twitter:url" content="{{ canonical_url }}"> + + {% if page_large_image %} + <meta name="twitter:card" content="summary_large_image"> + <meta name="twitter:image" content="{{ page_large_image }}"> + {% else %} + <meta name="twitter:card" content="summary"> + {% if page_teaser_image %} + <meta name="twitter:image" content="{{ page_teaser_image }}"> + {% endif %} + {% endif %} + + {% if author_twitter %} + <meta name="twitter:creator" content="@{{ author_twitter }}"> + {% endif %} +{% endif %} + +{% if page.date %} + <meta property="article:published_time" content="{{ page.date | date_to_xmlschema }}"> +{% endif %} + +{% if og_type == "article" and page.last_modified_at %} + <meta property="article:modified_time" content="{{ page.last_modified_at | date_to_xmlschema }}"> +{% endif %} + +{% if site.facebook %} + {% if site.facebook.publisher %} + <meta property="article:publisher" content="{{ site.facebook.publisher }}"> + {% endif %} + + {% if site.facebook.app_id %} + <meta property="fb:app_id" content="{{ site.facebook.app_id }}"> + {% endif %} +{% endif %} + +<link rel="canonical" href="{{ canonical_url }}"> + +{% if paginator.previous_page %} + <link rel="prev" href="{{ paginator.previous_page_path | absolute_url }}"> +{% endif %} +{% if paginator.next_page %} + <link rel="next" href="{{ paginator.next_page_path | absolute_url }}"> +{% endif %} + +<script type="application/ld+json"> + { + "@context": "https://schema.org", + {% if site.social.type == "Organization" %} + "@type": "Organization", + "url": {{ '/' | absolute_url | jsonify }}{% if site.og_image %}, + "logo": {{ site_og_image | jsonify }}{% endif %} + {% else %} + "@type": "Person", + "name": {{ site.social.name | default: site.name | jsonify }}, + "url": {{ '/' | absolute_url |jsonify }}{% if site.social.links %}, + "sameAs": {{ site.social.links | jsonify }}{% endif %} + {% endif %} + } +</script> + +{% if site.google_site_verification %} + <meta name="google-site-verification" content="{{ site.google_site_verification }}" /> +{% endif %} +{% if site.bing_site_verification %} + <meta name="msvalidate.01" content="{{ site.bing_site_verification }}"> +{% endif %} +{% if site.alexa_site_verification %} + <meta name="alexaVerifyID" content="{{ site.alexa_site_verification }}"> +{% endif %} +{% if site.yandex_site_verification %} + <meta name="yandex-verification" content="{{ site.yandex_site_verification }}"> +{% endif %} +{% if site.naver_site_verification %} + <meta name="naver-site-verification" content="{{ site.naver_site_verification }}"> +{% endif %} +<!-- end _includes/seo.html --> diff --git a/_includes/sidebar.html b/_includes/sidebar.html new file mode 100644 index 0000000..2a1884e --- /dev/null +++ b/_includes/sidebar.html @@ -0,0 +1,24 @@ +{% if page.author_profile or layout.author_profile or page.sidebar %} + <div class="sidebar sticky"> + {% if page.author_profile or layout.author_profile %}{% include author-profile.html %}{% endif %} + {% if page.sidebar %} + {% for s in page.sidebar %} + {% if s.image %} + <img src= + {% if s.image contains "://" %} + "{{ s.image }}" + {% else %} + "{{ s.image | relative_url }}" + {% endif %} + alt="{% if s.image_alt %}{{ s.image_alt }}{% endif %}"> + {% endif %} + {% if s.title %}<h3>{{ s.title }}</h3>{% endif %} + {% if s.text %}{{ s.text | markdownify }}{% endif %} + {% if s.nav %}{% include nav_list nav=s.nav %}{% endif %} + {% endfor %} + {% if page.sidebar.nav %} + {% include nav_list nav=page.sidebar.nav %} + {% endif %} + {% endif %} + </div> +{% endif %}
\ No newline at end of file diff --git a/_includes/skip-links.html b/_includes/skip-links.html new file mode 100644 index 0000000..2cd9f17 --- /dev/null +++ b/_includes/skip-links.html @@ -0,0 +1,8 @@ +<nav class="skip-links"> + <h2 class="screen-reader-text">{{ site.data.ui-text[site.locale].skip_links | default: 'Skip links' }}</h2> + <ul> + <li><a href="#site-nav" class="screen-reader-shortcut">{{ site.data.ui-text[site.locale].skip_primary_nav | default: 'Skip to primary navigation' }}</a></li> + <li><a href="#main" class="screen-reader-shortcut">{{ site.data.ui-text[site.locale].skip_content | default: 'Skip to content' }}</a></li> + <li><a href="#footer" class="screen-reader-shortcut">{{ site.data.ui-text[site.locale].skip_footer | default: 'Skip to footer' }}</a></li> + </ul> +</nav> diff --git a/_includes/social-share.html b/_includes/social-share.html new file mode 100644 index 0000000..0b37798 --- /dev/null +++ b/_includes/social-share.html @@ -0,0 +1,11 @@ +<section class="page__share"> + {% if site.data.ui-text[site.locale].share_on_label %} + <h4 class="page__share-title">{{ site.data.ui-text[site.locale].share_on_label | default: "Share on" }}</h4> + {% endif %} + + <a href="https://twitter.com/intent/tweet?{% if site.twitter.username %}via={{ site.twitter.username | url_encode }}&{% endif %}text={{ page.title | url_encode }}%20{{ page.url | absolute_url | url_encode }}" class="btn btn--twitter" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Twitter"><i class="fab fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a> + + <a href="https://www.facebook.com/sharer/sharer.php?u={{ page.url | absolute_url | url_encode }}" class="btn btn--facebook" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Facebook"><i class="fab fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a> + + <a href="https://www.linkedin.com/shareArticle?mini=true&url={{ page.url | absolute_url | url_encode }}" class="btn btn--linkedin" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} LinkedIn"><i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a> +</section> diff --git a/_includes/tag-list.html b/_includes/tag-list.html new file mode 100644 index 0000000..e0d02bf --- /dev/null +++ b/_includes/tag-list.html @@ -0,0 +1,26 @@ +{% case site.tag_archive.type %} + {% when "liquid" %} + {% assign path_type = "#" %} + {% when "jekyll-archives" %} + {% assign path_type = nil %} +{% endcase %} + +{% if site.tag_archive.path %} + {% comment %} + <!-- Sort alphabetically regardless of case e.g. a B c d E --> + <!-- modified from http://www.codeofclimber.ru/2015/sorting-site-tags-in-jekyll/ --> + {% endcomment %} + {% capture page_tags %}{% for tag in page.tags %}{{ tag | downcase }}|{{ tag }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %} + {% assign tag_hashes = page_tags | split: ',' | sort %} + + <p class="page__taxonomy"> + <strong><i class="fas fa-fw fa-tags" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].tags_label | default: "Tags:" }} </strong> + <span itemprop="keywords"> + {% for hash in tag_hashes %} + {% assign keyValue = hash | split: '|' %} + {% capture tag_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %} + <a href="{{ tag_word | slugify | prepend: path_type | prepend: site.tag_archive.path | relative_url }}" class="page__taxonomy-item" rel="tag">{{ tag_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %} + {% endfor %} + </span> + </p> +{% endif %}
\ No newline at end of file diff --git a/_includes/toc b/_includes/toc new file mode 100644 index 0000000..6423ccd --- /dev/null +++ b/_includes/toc @@ -0,0 +1,7 @@ +<aside class="sidebar__right"> +<nav class="toc" markdown="1"> +<header><h4 class="nav__title"><i class="fas fa-{{ include.icon | default: 'file-alt' }}"></i> {{ include.title | default: site.data.ui-text[site.locale].toc_label }}</h4></header> +* Auto generated table of contents +{:toc .toc__menu} +</nav> +</aside>
\ No newline at end of file diff --git a/_includes/toc.html b/_includes/toc.html new file mode 100644 index 0000000..54ab8b0 --- /dev/null +++ b/_includes/toc.html @@ -0,0 +1,85 @@ +{% capture tocWorkspace %} + {% comment %} + Version 1.0.5 + https://github.com/allejo/jekyll-toc + + "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe + + Usage: + {% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %} + + Parameters: + * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll + + Optional Parameters: + * sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC + * class (string) : '' - a CSS class assigned to the TOC + * id (string) : '' - an ID to assigned to the TOC + * h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored + * h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored + * ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list + * item_class (string) : '' - add custom class for each list item; has support for '%level%' placeholder, which is the current heading level + * baseurl (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content + + Output: + An ordered or unordered list representing the table of contents of a markdown block. This snippet will only generate the table of contents and will NOT output the markdown given to it + {% endcomment %} + + {% capture my_toc %}{% endcapture %} + {% assign orderedList = include.ordered | default: false %} + {% assign minHeader = include.h_min | default: 1 %} + {% assign maxHeader = include.h_max | default: 6 %} + {% assign nodes = include.html | split: '<h' %} + {% assign firstHeader = true %} + + {% capture listModifier %}{% if orderedList %}1.{% else %}-{% endif %}{% endcapture %} + + {% for node in nodes %} + {% if node == "" %} + {% continue %} + {% endif %} + + {% assign headerLevel = node | replace: '"', '' | slice: 0, 1 | times: 1 %} + + {% if headerLevel < minHeader or headerLevel > maxHeader %} + {% continue %} + {% endif %} + + {% if firstHeader %} + {% assign firstHeader = false %} + {% assign minHeader = headerLevel %} + {% endif %} + + {% assign indentAmount = headerLevel | minus: minHeader | add: 1 %} + {% assign _workspace = node | split: '</h' %} + + {% assign _idWorkspace = _workspace[0] | split: 'id="' %} + {% assign _idWorkspace = _idWorkspace[1] | split: '"' %} + {% assign html_id = _idWorkspace[0] %} + + {% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %} + {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} + + {% assign space = '' %} + {% for i in (1..indentAmount) %} + {% assign space = space | prepend: ' ' %} + {% endfor %} + + {% unless include.item_class == blank %} + {% capture listItemClass %}{:.{{ include.item_class | replace: '%level%', headerLevel }}}{% endcapture %} + {% endunless %} + + {% capture my_toc %}{{ my_toc }} +{{ space }}{{ listModifier }} {{ listItemClass }} [{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}]({% if include.baseurl %}{{ include.baseurl }}{% endif %}#{{ html_id }}){% endcapture %} + {% endfor %} + + {% if include.class %} + {% capture my_toc %}{:.{{ include.class }}} +{{ my_toc | lstrip }}{% endcapture %} + {% endif %} + + {% if include.id %} + {% capture my_toc %}{: #{{ include.id }}} +{{ my_toc | lstrip }}{% endcapture %} + {% endif %} +{% endcapture %}{% assign tocWorkspace = '' %}{{ my_toc | markdownify | strip }}
\ No newline at end of file diff --git a/_includes/video b/_includes/video new file mode 100644 index 0000000..8955c7c --- /dev/null +++ b/_includes/video @@ -0,0 +1,13 @@ +{% capture video_id %}{{ include.id }}{% endcapture %} +{% capture video_provider %}{{ include.provider }}{% endcapture %} + +<!-- Courtesy of embedresponsively.com //--> +<div class="responsive-video-container"> +{% if video_provider == "vimeo" %} + <iframe src="https://player.vimeo.com/video/{{ video_id }}?dnt=true" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe> +{% elsif video_provider == "youtube" %} + <iframe src="https://www.youtube-nocookie.com/embed/{{ video_id }}" frameborder="0" allowfullscreen></iframe> +{% elsif video_provider == "google-drive" %} + <iframe src="https://drive.google.com/file/d/{{ video_id }}/preview" frameborder="0" allowfullscreen></iframe> +{% endif %} +</div> |
