swiftfire-jekyll-theme 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +23 -0
  3. data/README.md +107 -0
  4. data/_data/cblocks.yml +31 -0
  5. data/_data/setup.yml +135 -0
  6. data/_data/text-for.yml +53 -0
  7. data/_includes/account-menus.html +82 -0
  8. data/_includes/banner-area.html +57 -0
  9. data/_includes/banner-icon.html +23 -0
  10. data/_includes/banner-title-area.html +30 -0
  11. data/_includes/cblock-row.html +18 -0
  12. data/_includes/cblock.html +20 -0
  13. data/_includes/disqus-comments.html +39 -0
  14. data/_includes/footer.html +16 -0
  15. data/_includes/google-analytics.html +21 -0
  16. data/_includes/head.html +74 -0
  17. data/_includes/menubar-icon.html +23 -0
  18. data/_includes/menubar.html +487 -0
  19. data/_includes/secondary-column.html +37 -0
  20. data/_includes/tertiary-column.html +8 -0
  21. data/_includes/vertical-menu.html +378 -0
  22. data/_includes/widgets/browser-info.html +16 -0
  23. data/_includes/widgets/categories.html +32 -0
  24. data/_includes/widgets/cookie-consent.html +21 -0
  25. data/_includes/widgets/older-posts.html +71 -0
  26. data/_includes/widgets/recent-posts.html +24 -0
  27. data/_includes/widgets/social-media-res/icon-github.html +7 -0
  28. data/_includes/widgets/social-media-res/icon-github.svg +1 -0
  29. data/_includes/widgets/social-media-res/icon-twitter.html +7 -0
  30. data/_includes/widgets/social-media-res/icon-twitter.svg +1 -0
  31. data/_includes/widgets/social-media.html +29 -0
  32. data/_includes/widgets/subscribe.html +18 -0
  33. data/_includes/widgets/youtube-player.html +38 -0
  34. data/_layouts/banner-layout.html +1 -0
  35. data/_layouts/category-page.html +51 -0
  36. data/_layouts/content-blocks.html +6 -0
  37. data/_layouts/default.html +152 -0
  38. data/_layouts/home.html +22 -0
  39. data/_layouts/page.html +30 -0
  40. data/_layouts/post.html +20 -0
  41. data/_sass/classic-jekyll-theme.scss +1178 -0
  42. data/_sass/classic/_banner-area.scss +552 -0
  43. data/_sass/classic/_body.scss +15 -0
  44. data/_sass/classic/_columns.scss +122 -0
  45. data/_sass/classic/_custom.scss +138 -0
  46. data/_sass/classic/_footer.scss +31 -0
  47. data/_sass/classic/_menubar.scss +530 -0
  48. data/_sass/classic/_normalize-override.scss +22 -0
  49. data/_sass/classic/_normalize.scss +447 -0
  50. data/_sass/classic/_page.scss +12 -0
  51. data/_sass/classic/_post.scss +10 -0
  52. data/_sass/classic/_swiftfire.scss +54 -0
  53. data/_sass/classic/_syntax-highlighting.scss +71 -0
  54. data/_sass/classic/_theme-internal.scss +37 -0
  55. data/_sass/classic/_theme-library.scss +85 -0
  56. data/_sass/classic/_vertical-menu.scss +252 -0
  57. data/_sass/classic/_widgets.scss +88 -0
  58. data/assets/img/banner-area-layout.png +0 -0
  59. data/assets/img/cog-wheels-120x68.png +0 -0
  60. data/assets/img/cog-wheels-240x135.png +0 -0
  61. data/assets/img/cog-wheels-30x17.png +0 -0
  62. data/assets/img/cog-wheels-60x43.png +0 -0
  63. data/assets/img/column-panel-layout.png +0 -0
  64. data/assets/img/test-pattern-110x83.png +0 -0
  65. data/assets/img/test-pattern-1280x800.png +0 -0
  66. data/assets/img/test-pattern-220x165.png +0 -0
  67. data/assets/img/test-pattern-55x42.png +0 -0
  68. data/assets/img/test-pattern-640x400.png +0 -0
  69. data/assets/img/top-level-layout.png +0 -0
  70. data/assets/js/cookieconsent.min.js +1 -0
  71. data/assets/main.scss +9 -0
  72. data/assets/templates/comment-section.sf.html +137 -0
  73. data/assets/templates/email-verification-text.sf.html +6 -0
  74. data/assets/templates/request-new-password-text.sf.txt +7 -0
  75. data/icons/android-chrome-192x192.png +0 -0
  76. data/icons/apple-touch-icon.png +0 -0
  77. data/icons/browserconfig.xml +9 -0
  78. data/icons/favicon-16x16.png +0 -0
  79. data/icons/favicon-32x32.png +0 -0
  80. data/icons/favicon.ico +0 -0
  81. data/icons/manifest.json +13 -0
  82. data/icons/mstile-150x150.png +0 -0
  83. data/icons/safari-pinned-tab.svg +14 -0
  84. data/pages/about/about.md +15 -0
  85. data/pages/account/comment-edit.sf.md +60 -0
  86. data/pages/account/comment-review.sf.md +80 -0
  87. data/pages/account/email-verification-failed.sf.md +11 -0
  88. data/pages/account/email-verification-success.sf.md +7 -0
  89. data/pages/account/error.sf.md +13 -0
  90. data/pages/account/forgot-password-continue.sf.md +9 -0
  91. data/pages/account/forgot-password.sf.md +25 -0
  92. data/pages/account/login.sf.md +19 -0
  93. data/pages/account/not-allowed.sf.md +7 -0
  94. data/pages/account/register-continue.sf.md +11 -0
  95. data/pages/account/register.sf.md +30 -0
  96. data/pages/account/request-new-password-failed.sf.md +13 -0
  97. data/pages/account/set-new-password-success.sf.md +7 -0
  98. data/pages/account/set-new-password.sf.md +25 -0
  99. data/pages/categories/classic.md +10 -0
  100. data/pages/categories/example.md +10 -0
  101. data/pages/categories/jekyll.md +10 -0
  102. data/pages/categories/update.md +10 -0
  103. data/pages/classic/01-features.md +36 -0
  104. data/pages/classic/02-setup.md +113 -0
  105. data/pages/classic/03-pages-and-posts.md +25 -0
  106. data/pages/classic/04-posts.md +18 -0
  107. data/pages/classic/05-menus.md +118 -0
  108. data/pages/classic/06-categories.md +38 -0
  109. data/pages/classic/07-terminology.md +35 -0
  110. data/pages/classic/08-versioning.md +23 -0
  111. data/pages/classic/09-problems.md +25 -0
  112. data/pages/contact/contact.md +18 -0
  113. data/pages/cookie-consent/cookie-consent.md +7 -0
  114. data/pages/download/download.md +10 -0
  115. data/pages/jekyll/01-jekyll.md +42 -0
  116. data/pages/jekyll/02-speed.md +88 -0
  117. data/pages/jekyll/03-ruby.md +19 -0
  118. data/pages/jekyll/04-cron-job.md +163 -0
  119. data/pages/layouts/banner-main.md +36 -0
  120. data/pages/layouts/blocks.md +11 -0
  121. data/pages/layouts/landing-page.md +21 -0
  122. data/pages/layouts/no-sec-no-ter.md +28 -0
  123. data/pages/layouts/sec-left-no-ter.md +28 -0
  124. data/pages/layouts/sec-left-ter-right.md +28 -0
  125. data/pages/layouts/sec-right-no-ter.md +28 -0
  126. data/pages/layouts/sec-right-ter-left.md +28 -0
  127. data/pages/menus/external-url.md +28 -0
  128. data/pages/menus/landing-page.md +8 -0
  129. data/pages/menus/submenu-subsections.md +72 -0
  130. data/pages/menus/submenu1.md +22 -0
  131. data/pages/menus/submenu2.md +21 -0
  132. data/pages/menus/submenu3.md +47 -0
  133. data/pages/menus/submenu4.md +36 -0
  134. data/pages/menus/subsubmenu3-1.md +21 -0
  135. data/pages/menus/subsubmenu3-2.md +21 -0
  136. data/pages/menus/subsubmenu4-1.md +31 -0
  137. data/pages/menus/subsubmenu4-2.md +31 -0
  138. metadata +269 -0
@@ -0,0 +1,23 @@
1
+
2
+ <!-- include banner-icon.html -->
3
+ {%- comment -%}<!--
4
+
5
+ This file is for customization of the banner icon.
6
+
7
+ Do not change the name of the class of this div!
8
+
9
+ If no icon is needed, don't put anything in here, but keep the file.
10
+
11
+ Note that a simple banner icon can also be assigned through the settings in the classic-jekyll-theme.scss file.
12
+
13
+ Be aware that this banner-icon is arranged outside the DOM and as such does not drive the size of the the banner.
14
+
15
+ To display/not-display and elements use the '.display-flex-...' classes en '.display-block-...' classes. (See _sass/_theme-library.scss for more.
16
+
17
+ Example: <div class='myclass display-block-narrow'><p>Hello</p></div>
18
+
19
+ Will display the text "Hello" only when the narrow layout is in use.
20
+
21
+ -->{%- endcomment %}
22
+ <div class="banner-icon"></div>
23
+ <!-- end of include banner-icon.html -->
@@ -0,0 +1,30 @@
1
+
2
+ <!-- include banner-title-area.html -->
3
+ {%- comment -%}<!--
4
+
5
+ This file is for customization of the title and subtitle in the banner.
6
+
7
+ Do not change the name of any of the classes!
8
+
9
+ If customization is needed, don't put anything in here, but keep the file.
10
+
11
+ Note that simple title & subtitle can also be assigned through the settings in the classic-jekyll-theme.scss file.
12
+
13
+ Be aware that this title-area is arranged outside the DOM and as such does not drive the size of the the banner.
14
+
15
+ To display/not-display and elements use the '.display-flex-...' classes en '.display-block-...' classes. (See _sass/_theme-library.scss for more.
16
+
17
+ Example: <div class='myclass display-block-narrow'><p>Hello</p></div>
18
+
19
+ Will display the text "Hello" only when the narrow layout is in use.
20
+
21
+ -->{%- endcomment %}
22
+ <div class="title-area">
23
+ <div class="title">
24
+ <p>{{ site.title }}</p>
25
+ </div>
26
+ <div class="subtitle">
27
+ <p>{{ site.data.setup.subtitle }}</p>
28
+ </div>
29
+ </div>
30
+ <!-- end of include banner-title-area.html -->
@@ -0,0 +1,18 @@
1
+
2
+ <!-- include cblock-row.html -->
3
+ {% comment %}<!--
4
+
5
+ Layout of a single 'cblock'.
6
+
7
+ Parameters:
8
+ title: The title for the row of cblocks to be displayed.
9
+ cblocks: A sequence of cblock's that must be displayed in a row.
10
+
11
+ -->{%- endcomment -%}
12
+ <h2 class="cblock-row-title">{{ include.title }}</h2>
13
+ <div class="cblock-row">
14
+ {%- for cblock in include.cblocks -%}
15
+ {%- include cblock.html name=cblock.name image=cblock.image description=cblock.description link=cblock.link -%}
16
+ {%- endfor %}
17
+ </div>
18
+ <!-- end of include cblock-row.html -->
@@ -0,0 +1,20 @@
1
+
2
+ <!-- include cblock.html -->
3
+ {% comment %}<!--
4
+
5
+ Layout of a single 'cblock'.
6
+
7
+ Parameters:
8
+ link: A link for more information about the item.
9
+ image: A link that points to an image to be displayed for the item.
10
+ name: The name of the item.
11
+ description: A short description of the item.
12
+
13
+ -->{%- endcomment -%}
14
+
15
+ <div class="cblock">
16
+ <a href={{ include.link }}><img class="cblock-image" src={{ include.image }}></a>
17
+ <p class="cblock-name"><a href={{ include.link }}>{{ include.name }}</a></p>
18
+ <p class="cblock-description">{{ include.description }}</p>
19
+ </div>
20
+ <!-- end of include cblock.html -->
@@ -0,0 +1,39 @@
1
+
2
+ <!-- include disqus-comments.html -->
3
+ {%- comment -%}<!--
4
+
5
+ Layout of a disqus comment section.
6
+
7
+ Include this in a layout where the disqus comments must be placed.
8
+
9
+ Control:
10
+ page.comments: (yes | no) Turn the comment section on or of.
11
+ jekyll.environment: The disqus comments are only created for 'production' code.
12
+ site.url: Is prepended to the page.url to build the required disqus-url that allows disqus to mange the comments.
13
+ site.github.url: Same as site.url, but for sites hosted on github.
14
+ site.disqus.shortname: The disqus identifier for the site (user)
15
+
16
+ -->{%- endcomment -%}
17
+
18
+ {%- if page.comments != false and jekyll.environment == "production" -%}
19
+ {%- if site.url -%}
20
+ {%- assign disqus_url = page.url | prepend: site.url -%}
21
+ {%- elsif site.github.url -%}
22
+ {%- assign disqus_url = page.url | prepend: site.github.url -%}
23
+ {%- endif %}
24
+ <div id="disqus_thread"></div>
25
+ <script>
26
+ var disqus_config = function () {
27
+ this.page.url = '{{ disqus_url }}';
28
+ this.page.identifier = '{{ disqus_url }}';
29
+ };
30
+
31
+ (function() {
32
+ var d = document, s = d.createElement('script');
33
+ s.src = 'https://{{ site.disqus.shortname }}.disqus.com/embed.js';
34
+ s.setAttribute('data-timestamp', +new Date());
35
+ (d.head || d.body).appendChild(s);
36
+ })();
37
+ </script>
38
+ <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
39
+ {% endif -%}
@@ -0,0 +1,16 @@
1
+
2
+ <!-- include footer.html -->
3
+ {%- comment -%}<!--
4
+
5
+ Layout of the footer.
6
+
7
+ Configuration:
8
+ site.description: The text to be displayed.
9
+
10
+ -->{%- endcomment %}
11
+ <footer>
12
+ <div>
13
+ <p>{{ site.description | escape }}</p>
14
+ </div>
15
+ </footer>
16
+ <!-- end of include footer.html -->
@@ -0,0 +1,21 @@
1
+
2
+ <!-- include google-analytics.html -->
3
+ {% comment %}<!--
4
+
5
+ The script that allows the use of google analytics.
6
+
7
+ Configuration:
8
+ site.google_analytics: The site-id for the site issued by google analytics.
9
+
10
+ -->{%- endcomment -%}
11
+ <script>
12
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
13
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
14
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
15
+ })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
16
+
17
+ ga('create', '{{ site.google_analytics }}', 'auto');
18
+ ga('send', 'pageview');
19
+ </script>
20
+ <!-- end of include google-analytics.html -->
21
+
@@ -0,0 +1,74 @@
1
+
2
+ <!-- include head.html -->
3
+ {%- comment -%}<!--
4
+
5
+ Layout of the header included in all html pages.
6
+
7
+ The favicons are generated by http://realfavicongenerator.net.
8
+ To use your own set of favicons, visit that site, upload your favicon image and select the option that the favicons
9
+ are stored inside a folder called 'icons'. The download that folder and replace the contents of the 'icons' folder
10
+ with the files generated by the realfavicongenerator.
11
+
12
+ Alternatively disable the favicons by setting site.data.setup.realfavicongenerator to 'no'.
13
+
14
+ Configuration:
15
+ site.title: The title to be used when page.title is not set.
16
+ page.title: The title to be used for the <title> element.
17
+ site.description: The description to be used when the page.excerpt is not set.
18
+ page.excerpt: The description for the <meta> element with the name 'description'.
19
+ site.data.setup.use-separate-banner-menubar-file: Used to determine if JQuery must be loaded.
20
+ site.data.setup.drop-down-menu: Used to determine if JQuery must be loaded.
21
+ site.data.setup.enable-cookies-policy: Used to determine if the cookies consent must be used.
22
+ site.google_analytics: Used to determine if google-analytics must be used.
23
+
24
+ -->{%- endcomment %}
25
+ <head>
26
+ <meta charset="utf-8">
27
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
28
+ <meta name="viewport" content="width=device-width, initial-scale=1">
29
+
30
+ {%- if site.data.setup.realfavicongenerator %}
31
+ <link rel="apple-touch-icon" sizes="180x180" href="{{ "/icons/apple-touch-icon.png" | relative_url }}">
32
+ <link rel="icon" type="image/png" sizes="32x32" href="{{ "/icons/favicon-32x32.png" | relative_url }}">
33
+ <link rel="icon" type="image/png" sizes="16x16" href="{{ "/icons/favicon-16x16.png" | relative_url }}">
34
+ <link rel="manifest" href="{{ "/icons/manifest.json" | relative_url }}">
35
+ <link rel="mask-icon" href="{{ "/icons/safari-pinned-tab.svg" | relative_url }}" color="#5bbad5">
36
+ <link rel="shortcut icon" href="{{ "/icons/favicon.ico" | relative_url }}">
37
+ <meta name="msapplication-config" content="{{ "/icons/browserconfig.xml" | relative_url }}">
38
+ <meta name="theme-color" content="#ffffff">
39
+ {%- endif %}
40
+
41
+ <title>{%- if page.title -%}{{ page.title | escape }}{%- else -%}{{ site.title | escape }}{%- endif -%}</title>
42
+
43
+ {%- if page.excerpt -%}
44
+ {%- assign description = page.excerpt -%}
45
+ {%- else -%}
46
+ {%- assign description = site.description -%}
47
+ {%- endif %}
48
+
49
+ <meta name="description" content="{{ description | strip_html | normalize_whitespace | truncate: 160 | escape }}">
50
+
51
+ <link rel="stylesheet" href="{{ "/assets/main.css" | relative_url }}">
52
+ <link rel="canonical" href="{{ page.url | replace:'index.html','' | absolute_url }}">
53
+ <link rel="alternate" type="application/rss+xml" title="{{ site.title | escape }}" href="{{ "/feed.xml" | relative_url }}">
54
+
55
+ {%- comment -%}<!-- Include JQuery from google -->{%- endcomment -%}
56
+
57
+ {%- if site.data.setup.use-separate-banner-menubar-file %}
58
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
59
+ {%- endif -%}
60
+
61
+ {%- comment -%}<!-- Include google analytics for production build and if necessary -->{%- endcomment -%}
62
+
63
+ {%- if jekyll.environment == 'production' and site.google_analytics -%}
64
+ {%- include google-analytics.html -%}
65
+ {%- endif -%}
66
+
67
+ {%- comment -%}<!-- Include cookie consent for production build when enabled -->{%- endcomment -%}
68
+ {%- if jekyll.environment == 'production' -%}
69
+ {%- if site.data.setup.enable-cookies-policy -%}
70
+ {%- include widgets/cookie-consent.html -%}
71
+ {%- endif -%}
72
+ {%- endif %}
73
+ </head>
74
+ <!-- end of include head.html -->
@@ -0,0 +1,23 @@
1
+
2
+ <!-- include menubar-icon.html -->
3
+ {%- comment -%}<!--
4
+
5
+ This file is for customization of the menubar icon.
6
+
7
+ Do not change the name of the class of this div!
8
+
9
+ If no icon is needed, don't put anything in here, but keep the file.
10
+
11
+ Note that a simple menubar icon can also be assigned through the settings in the classic-jekyll-theme.scss file.
12
+
13
+ The content here will drive the height of the menubar if the '$menubar-height-...' is set to 'auto'.
14
+
15
+ To display/not-display and elements use the '.display-flex-...' classes en '.display-block-...' classes. (See _sass/_theme-library.scss for more.
16
+
17
+ Example: <div class='myclass display-block-narrow'><p>Hello</p></div>
18
+
19
+ Will display the text "Hello" only when the narrow layout is in use.
20
+
21
+ -->{%- endcomment %}
22
+ <div class="menubar-icon"></div>
23
+ <!-- end of include menubar-icon.html -->
@@ -0,0 +1,487 @@
1
+
2
+ <!-- include menubar.html -->
3
+ <nav class="menubar">
4
+
5
+ {%- comment -%}<!-- include the menu icon -->{%- endcomment -%}
6
+
7
+ {%- include menubar-icon.html -%}
8
+
9
+ {%- comment -%}<!-- Create a list of top menu item titles -->{%- endcomment -%}
10
+
11
+ {%- assign buildTimeInSecondsSinceEpoch = site.time | date: "%s" | plus: 0 -%}
12
+
13
+ {%- assign pagesForPublishing = "" | split: "" -%}
14
+
15
+ {%- if site.data.setup.exclude-pages-from-menus -%}{%- else -%}
16
+ {%- for ape in site.pages -%}
17
+ {%- assign pageInSecondsSindsEpoch = ape.date | date:"%s" | plus: 0 -%}
18
+ {%- if pageInSecondsSindsEpoch < buildTimeInSecondsSinceEpoch -%}
19
+ {%- assign pagesForPublishing = pagesForPublishing | push: ape -%}
20
+ {%- endif -%}
21
+ {%- endfor -%}
22
+ {%- endif -%}
23
+
24
+ {%- if site.data.setup.include-posts-in-menus -%}
25
+ {%- assign pagesForPublishing = pagesForPublishing | concat: site.posts -%}
26
+ {%- endif -%}
27
+
28
+ {%- assign topTitles = "" | split: "" -%}
29
+ {%- assign sortedPages = pagesForPublishing | where:'menuInclude', true | where_exp:'item', 'item.menuTopTitle != nil' | sort: 'menuTopIndex', 'last' -%}
30
+ {%- for ape in sortedPages -%}{%- assign topTitles = topTitles | push: ape.menuTopTitle -%}{%- endfor -%}
31
+ {%- assign topTitles = topTitles | uniq -%}
32
+
33
+ {%- comment -%}<!-- Home page -->{%- endcomment -%}
34
+ {%- assign home = 'Home' -%}
35
+ {%- if site.data.text-for.tHome -%}{%- assign home = site.data.text-for.tHome -%}{%- endif -%}
36
+ {%- if page.url == '/' %}
37
+ <div class="item isActiveSelection">
38
+ {%- else %}
39
+ <div class="item">
40
+ {%- endif %}
41
+ <div class="title">
42
+ <label class="symbol"><p></p></label>
43
+ <div class="text"><a href="{{ site.url }}{{ site.baseurl }}/index.html"><p>{{ home }}</p></a></div>
44
+ </div>
45
+ </div>
46
+
47
+ {%- comment -%}<!-- Page menus -->{%- endcomment -%}
48
+ {%- for topTitle in topTitles -%}
49
+
50
+ {%- if jekyll.environment != 'production' and site.data.setup.fast-content-build -%}{%- else -%}
51
+
52
+ {%- comment -%}<!-- note: the html comment tags are for editor coloring support
53
+
54
+ Due to the poor support for variables in Liquid we have to resort to some fairly laborious code.
55
+
56
+ First determine all pages that contain sub menu information for the running top menu item. These are collected in "titlePages"
57
+
58
+ Then create four lists containing the sub menu title, index, url and link respectively. These lists are all in the same sequence such that entry [n] is applicable to the same sub menu in all lists. (I.e. they are synchronous)
59
+
60
+ Then sort the lists into four new lists. Again these lists must be kept synchronous.
61
+
62
+ Lastly, step through the lists to create the actual sub menu's
63
+
64
+ -->{%- endcomment -%}
65
+
66
+ {%- assign titlePages = sortedPages | where:'menuTopTitle', topTitle -%}
67
+
68
+ {%- assign subMenuTitles = "" | split: "" -%}
69
+ {%- assign subMenuIndexes = "" | split: "" -%}
70
+ {%- assign subMenuUrls = "" | split: "" -%}
71
+ {%- assign subMenuLinks = "" | split: "" -%}
72
+
73
+ {%- for ape in titlePages -%}
74
+ {%- if ape.menuSubTitle != nil -%}
75
+ {%- assign subMenuTitles = subMenuTitles | push: ape.menuSubTitle -%}
76
+ {%- if ape.menuSubIndex != nil -%}
77
+ {%- assign subMenuIndexes = subMenuIndexes | push: ape.menuSubIndex -%}
78
+ {%- else -%}
79
+ {%- assign subMenuIndexes = subMenuIndexes | push: -1 -%}
80
+ {%- endif -%}
81
+ {%- assign subMenuUrls = subMenuUrls | push: ape.url -%}
82
+ {%- if ape.menuLink != nil -%}
83
+ {%- assign subMenuLinks = subMenuLinks | push: ape.menuLink -%}
84
+ {%- else -%}
85
+ {%- assign subMenuLinks = subMenuLinks | push: true -%}
86
+ {%- endif -%}
87
+ {%- endif -%}
88
+ {%- if ape.menuSubs != nil -%}
89
+ {%- for sub in ape.menuSubs -%}
90
+ {%- assign subMenuTitles = subMenuTitles | push: sub.title -%}
91
+ {%- if sub.index != nil -%}
92
+ {%- assign subMenuIndexes = subMenuIndexes | push: sub.index -%}
93
+ {%- else -%}
94
+ {%- assign subMenuIndexes = subMenuIndexes | push: -1 -%}
95
+ {%- endif -%}
96
+ {%- if sub.url != nil -%}
97
+ {%- if sub.anchorId != nil -%}
98
+ {%- assign urlWithAnchorId = sub.url | append: '#' | append: sub.anchorId -%}
99
+ {%- else -%}
100
+ {%- assign urlWithAnchorId = sub.url -%}
101
+ {%- endif -%}
102
+ {%- else -%}
103
+ {%- if sub.anchorId != nil -%}
104
+ {%- assign urlWithAnchorId = ape.url | append: '#' | append: sub.anchorId -%}
105
+ {%- else -%}
106
+ {%- assign urlWithAnchorId = ape.url -%}
107
+ {%- endif -%}
108
+ {%- endif -%}
109
+ {%- assign subMenuUrls = subMenuUrls | push: urlWithAnchorId -%}
110
+ {%- if sub.link != nil -%}
111
+ {%- assign subMenuLinks = subMenuLinks | push: sub.link -%}
112
+ {%- else -%}
113
+ {%- assign subMenuLinks = subMenuLinks | push: true -%}
114
+ {%- endif -%}
115
+ {%- endfor -%}
116
+ {%- endif -%}
117
+ {%- endfor -%}
118
+
119
+ {%- assign sortedSubMenuTitles = "" | split: "" -%}
120
+ {%- assign sortedSubMenuIndexes = subMenuIndexes | sort -%}
121
+ {%- assign sortedSubMenuUrls = "" | split: "" -%}
122
+ {%- assign sortedSubMenuLinks = "" | split: "" -%}
123
+
124
+ {%- for menuIndex in sortedSubMenuIndexes -%}
125
+ {%- if menuIndex != -1 -%}
126
+ {%- for aMenuIndex in subMenuIndexes -%}
127
+ {%- if aMenuIndex == menuIndex -%}
128
+ {%- assign sortedSubMenuTitles = sortedSubMenuTitles | push: subMenuTitles[forloop.index0] -%}
129
+ {%- assign sortedSubMenuUrls = sortedSubMenuUrls | push: subMenuUrls[forloop.index0] -%}
130
+ {%- assign sortedSubMenuLinks = sortedSubMenuLinks | push: subMenuLinks[forloop.index0] -%}
131
+ {%- continue -%}
132
+ {%- endif -%}
133
+ {%- endfor -%}
134
+ {%- endif -%}
135
+ {%- endfor -%}
136
+ {%- for aMenuIndex in subMenuIndexes -%}
137
+ {%- if aMenuIndex == -1 -%}
138
+ {%- assign sortedSubMenuTitles = sortedSubMenuTitles | push: subMenuTitles[forloop.index0] -%}
139
+ {%- assign sortedSubMenuUrls = sortedSubMenuUrls | push: subMenuUrls[forloop.index0] -%}
140
+ {%- assign sortedSubMenuLinks = sortedSubMenuLinks | push: subMenuLinks[forloop.index0] -%}
141
+ {%- continue -%}
142
+ {%- endif -%}
143
+ {%- endfor -%}
144
+
145
+ {%- endif %}
146
+ <div class="item-separator"><p><!-- empty but necessary --></p></div>
147
+
148
+ {%- comment -%}<!-- If the menu selection and active page are the same, show it -->{%- endcomment -%}
149
+
150
+ {%- if page.menuTopTitle == topTitle -%}
151
+ {%- if page.menuLink == false %}
152
+ <div class="item">
153
+ {%- else %}
154
+ <div class="item isActiveSelection">
155
+ {%- endif -%}
156
+ {%- else %}
157
+ <div class="item">
158
+ {%- endif -%}
159
+
160
+ {%- comment -%}<!-- Create top menu item -->{%- endcomment %}
161
+ <input type="checkbox" id="{{ topTitle | replace:' ','-' | append:'-checkbox'}}">
162
+ <div class="title">
163
+ <label class="symbol" for="{{ topTitle | replace:' ','-' | append:'-checkbox'}}">
164
+ {%- if sortedSubMenuTitles.size > 0 %}
165
+ <p class="code"><!-- will be filled by disclosure indicator --></p>
166
+ {%- else %}
167
+ <p></p>
168
+ {%- endif %}
169
+ </label>
170
+ <div class="text">
171
+
172
+ {%- comment -%}<!-- Find page to link to -->{%- endcomment -%}
173
+
174
+ {%- assign pageFound = false -%}
175
+ {%- for ape in sortedPages -%}
176
+ {%- if ape.menuTopTitle == topTitle and ape.menuSubTitle == nil and ape.menuSubs == nil -%}
177
+ {%- if ape.menuLink == false %}
178
+ <p class="paddingAsLink">{{ topTitle }}</p>
179
+ {%- else %}
180
+ {%- if ape.url contains "http" -%}
181
+ <a href="{{ ape.url }}"><p>{{ topTitle }}</p></a>
182
+ {%- else -%}
183
+ <a href="{{ ape.url | relative_url }}"><p>{{ topTitle }}</p></a>
184
+ {%- endif -%}
185
+ {%- endif -%}
186
+ {%- assign pageFound = true -%}
187
+ {%- break -%}
188
+ {%- endif -%}
189
+ {%- endfor -%}
190
+ {%- if pageFound == false -%}
191
+ {%- for ape in sortedPages -%}
192
+ {%- if ape.menuTopTitle == topTitle and ape.menuTopIndex -%}
193
+ {%- if ape.menuLink == false %}
194
+ <p class="paddingAsLink">{{ topTitle }}</p>
195
+ {%- else %}
196
+ {%- if ape.url contains "http" -%}
197
+ <a href="{{ ape.url }}"><p>{{ topTitle }}</p></a>
198
+ {%- else -%}
199
+ <a href="{{ ape.url | relative_url }}"><p>{{ topTitle }}</p></a>
200
+ {%- endif -%}
201
+ {%- endif -%}
202
+ {%- assign pageFound = true -%}
203
+ {%- break -%}
204
+ {%- endif -%}
205
+ {%- endfor -%}
206
+ {%- if pageFound == false %}
207
+ <p class="paddingAsLink">{{ topTitle }}</p>
208
+ {%- endif -%}
209
+ {%- endif %}
210
+ </div>
211
+ </div>
212
+
213
+
214
+ {%- if jekyll.environment != 'production' and site.data.setup.fast-content-build -%}{%- else %}
215
+
216
+ {%- comment -%}<!-- Create sub menu items -->{%- endcomment -%}
217
+
218
+ {% if sortedSubMenuTitles.size > 0 -%}
219
+ {%- if site.data.setup.drop-down-menu %}
220
+ <div class="dropdown">
221
+ {%- else %}
222
+ <div class="dropdown-narrow">
223
+ {%- endif -%}
224
+
225
+ {%- assign processedSubMenuTitles = "" | split: "" -%}
226
+
227
+ {%- for subMenuTitle in sortedSubMenuTitles %}
228
+
229
+ {%- comment -%}<!-- Do not build the same sub menu item twice -->{%- endcomment -%}
230
+
231
+ {%- assign subMenuTitleProcessed = false -%}
232
+ {%- for smt in processedSubMenuTitles -%}
233
+ {%- if smt == subMenuTitle -%}{% assign subMenuTitleProcessed = true -%}{%- endif -%}
234
+ {%- endfor -%}
235
+ {%- if subMenuTitleProcessed -%}
236
+ {%- continue -%}
237
+ {%- else -%}
238
+ {%- assign processedSubMenuTitles = processedSubMenuTitles | push: subMenuTitle -%}
239
+ {%- endif -%}
240
+
241
+ {%- comment -%}<!-- Build the sub-sub tables for {{ subMenuTitle }} -->{%- endcomment -%}
242
+
243
+ {% assign subsubMenuTitles = "" | split: "" -%}
244
+ {%- assign subsubMenuIndexes = "" | split: "" -%}
245
+ {%- assign subsubMenuUrls = "" | split: "" -%}
246
+ {%- assign subsubMenuLinks = "" | split: "" -%}
247
+
248
+ {%- for ape in titlePages %}
249
+ {%- if ape.menuSubs != nil %}
250
+ {%- for sub in ape.menuSubs -%}
251
+ {%- if sub.title == subMenuTitle %}
252
+ {%- if sub.sub != nil %}
253
+ {%- for subsub in sub.sub %}
254
+ {%- assign subsubMenuTitles = subsubMenuTitles | push: subsub.title -%}
255
+ {%- if subsub.index != nil -%}
256
+ {%- assign subsubMenuIndexes = subsubMenuIndexes | push: subsub.index -%}
257
+ {%- else -%}
258
+ {%- assign subsubMenuIndexes = subsubMenuIndexes | push: -1 -%}
259
+ {%- endif -%}
260
+ {%- if subsub.url != nil -%}
261
+ {%- if subsub.anchorId != nil -%}
262
+ {%- assign urlWithAnchorId = subsub.url | append: '#' | append: subsub.anchorId -%}
263
+ {%- else -%}
264
+ {%- assign urlWithAnchorId = subsub.url -%}
265
+ {%- endif -%}
266
+ {%- else -%}
267
+ {%- if subsub.anchorId != nil -%}
268
+ {%- assign urlWithAnchorId = ape.url | append: '#' | append: subsub.anchorId -%}
269
+ {%- else -%}
270
+ {%- assign urlWithAnchorId = ape.url -%}
271
+ {%- endif -%}
272
+ {%- endif -%}
273
+ {%- assign subsubMenuUrls = subsubMenuUrls | push: urlWithAnchorId -%}
274
+ {%- if subsub.link != nil -%}
275
+ {%- assign subsubMenuLinks = subsubMenuLinks | push: subsub.link -%}
276
+ {%- else -%}
277
+ {%- assign subsubMenuLinks = subsubMenuLinks | push: true -%}
278
+ {%- endif -%}
279
+ {%- endfor -%}
280
+ {%- endif -%}
281
+ {%- endif -%}
282
+ {%- endfor -%}
283
+ {%- endif -%}
284
+ {%- endfor %}
285
+
286
+ {%- comment -%}<!-- Sort all 4 the lists based on the index of the subMenu that was read -->{%- endcomment -%}
287
+
288
+ {% assign sortedSubsubMenuTitles = "" | split: "" -%}
289
+ {%- assign sortedSubsubMenuIndexes = subsubMenuIndexes | sort -%}
290
+ {%- assign sortedSubsubMenuUrls = "" | split: "" -%}
291
+ {%- assign sortedSubsubMenuLinks = "" | split: "" -%}
292
+
293
+ {%- for menuIndex in sortedSubsubMenuIndexes -%}
294
+ {%- if menuIndex != -1 -%}
295
+ {%- for aMenuIndex in subsubMenuIndexes -%}
296
+ {%- if aMenuIndex == menuIndex -%}
297
+ {%- assign sortedSubsubMenuTitles = sortedSubsubMenuTitles | push: subsubMenuTitles[forloop.index0] -%}
298
+ {%- assign sortedSubsubMenuUrls = sortedSubsubMenuUrls | push: subsubMenuUrls[forloop.index0] -%}
299
+ {%- assign sortedSubsubMenuLinks = sortedSubsubMenuLinks | push: subsubMenuLinks[forloop.index0] -%}
300
+ {%- continue -%}
301
+ {%- endif -%}
302
+ {%- endfor -%}
303
+ {%- endif -%}
304
+ {%- endfor -%}
305
+ {%- for aMenuIndex in subsubMenuIndexes -%}
306
+ {%- if aMenuIndex == -1 -%}
307
+ {%- assign sortedSubsubMenuTitles = sortedSubsubMenuTitles | push: subsubMenuTitles[forloop.index0] -%}
308
+ {%- assign sortedSubsubMenuUrls = sortedSubsubMenuUrls | push: subsubMenuUrls[forloop.index0] -%}
309
+ {%- assign sortedSubsubMenuLinks = sortedSubsubMenuLinks | push: subsubMenuLinks[forloop.index0] -%}
310
+ {%- continue -%}
311
+ {%- endif -%}
312
+ {%- endfor %}
313
+
314
+ {%- comment -%}<!-- Create the sub menu -->{%- endcomment %}
315
+ <div class="subitem-separator"><p></p></div>
316
+ {%- if sortedSubMenuLinks[forloop.index0] != false -%}
317
+ {%- if sortedSubMenuUrls[forloop.index0] == page.url %}
318
+ <div class="subitem isActiveSelection">
319
+ {%- else -%}
320
+ {%- assign urlFound = false -%}
321
+ {%- for url in sortedSubsubMenuUrls -%}
322
+ {%- if url == page.url -%}{%- assign urlFound = true -%}{%- endif -%}
323
+ {%- endfor -%}
324
+ {%- if urlFound %}
325
+ <div class="subitem isActiveSelection">
326
+ {%- else %}
327
+ <div class="subitem">
328
+ {%- endif -%}
329
+ {%- endif %}
330
+ <input type="checkbox" id="{{ subMenuTitle | replace:' ','-' | append:'-checkbox'}}">
331
+ <div class="title">
332
+ <label class="symbol" for="{{ subMenuTitle | replace:' ','-' | append:'-checkbox'}}">
333
+ {%- if sortedSubsubMenuTitles.size > 0 %}
334
+ <p class="code"><!-- will be filled by disclosure indicator --></p>
335
+ {%- else %}
336
+ <p></p>
337
+ {%- endif %}
338
+ </label>
339
+ <div class="text">
340
+ {%- if sortedSubMenuUrls[forloop.index0] contains "http" -%}
341
+ <a href="{{ sortedSubMenuUrls[forloop.index0] }}"><p>{{ subMenuTitle }}</p></a>
342
+ {%- else -%}
343
+ <a href="{{ sortedSubMenuUrls[forloop.index0] | relative_url }}"><p>{{ subMenuTitle }}</p></a>
344
+ {%- endif -%}
345
+ </div>
346
+ </div>
347
+ {%- else -%}
348
+ {%- assign urlFound = false -%}
349
+ {%- for url in sortedSubsubMenuUrls -%}
350
+ {%- if url == page.url -%}{%- assign urlFound = true -%}{%- endif -%}
351
+ {%- endfor -%}
352
+ {%- if urlFound %}
353
+ <div class="subitem isActiveSelection">
354
+ {%- else %}
355
+ <div class="subitem">
356
+ {%- endif %}
357
+ <input type="checkbox" id="{{ subMenuTitle | replace:' ','-' | append:'-checkbox'}}">
358
+ <div class="title">
359
+ <label class="symbol" for="{{ subMenuTitle | replace:' ','-' | append:'-checkbox'}}">
360
+ {%- if sortedSubsubMenuTitles.size > 0 %}
361
+ <p class="code"><!-- will be filled by disclosure indicator --></p>
362
+ {%- else %}
363
+ <p></p>
364
+ {%- endif %}
365
+ </label>
366
+ <div class="text"><p class="paddingAsLink">{{ subMenuTitle }}</p></div>
367
+ </div>
368
+ {%- endif -%}
369
+
370
+ {%- comment -%}<!-- sub sub menu item build -->{%- endcomment -%}
371
+
372
+ {% if sortedSubsubMenuTitles.size > 0 -%}
373
+ {%- if site.data.setup.drop-down-menu %}
374
+ <div class="sub-dropdown">
375
+ {%- else %}
376
+ <div class="sub-dropdown-narrow">
377
+ {%- endif -%}
378
+ {%- for subsubMenuTitle in sortedSubsubMenuTitles %}
379
+ <div class="subsubitem-separator"><p></p></div>
380
+ {%- if sortedSubsubMenuLinks[forloop.index0] != false -%}
381
+ {%- if sortedSubsubMenuUrls[forloop.index0] == page.url %}
382
+ <div class="subsubitem isActiveSelection">
383
+ {%- else %}
384
+ <div class="subsubitem">
385
+ {%- endif %}
386
+ <div class="title">
387
+ <div class="symbol"><p></p></div>
388
+ <div class="text">
389
+ {%- if sortedSubsubMenuUrls[forloop.index0] contains "http" -%}
390
+ <a href="{{ sortedSubsubMenuUrls[forloop.index0] }}"><p>{{ subsubMenuTitle }}</p></a>
391
+ {%- else -%}
392
+ <a href="{{ sortedSubsubMenuUrls[forloop.index0] | relative_url }}"><p>{{ subsubMenuTitle }}</p></a>
393
+ {%- endif -%}
394
+ </div>
395
+ </div>
396
+ {%- else %}
397
+ <div class="subsubitem">
398
+ <div class="title">
399
+ <div class="symbol"><p></p></div>
400
+ <div class="text"><p class="paddingAsLink">{{ subsubMenuTitle }}</p></div>
401
+ </div>
402
+ {%- endif %}
403
+ </div>
404
+ {%- endfor %}
405
+ </div>
406
+ {%- endif %}
407
+ </div>
408
+ {%- endfor %}
409
+ </div>
410
+ {%- endif -%}
411
+ {%- endif %}
412
+ </div>
413
+ {%- endfor -%}
414
+
415
+
416
+ {%- comment -%}<!-- Categories menu -->{%- endcomment -%}
417
+
418
+ {%- if jekyll.environment != 'production' and site.data.setup.fast-content-build -%}{%- else -%}
419
+ {%- if site.data.setup.generate-categories-menu -%}
420
+ {%- assign cats = pagesForPublishing | where:'layout', 'category-page' | sort:'title' -%}
421
+ {%- if cats.size > 0 -%}
422
+ {%- assign categories = 'Categories' -%}
423
+ {%- if site.data.text-for.tCategories -%}{%- assign categories = site.data.text-for.tCategories -%}{%- endif %}
424
+ <div class="item-separator"><p><!-- empty but necessary --></p></div>
425
+
426
+ {%- comment -%}<!-- Check if a category page is selected -->{%- endcomment -%}
427
+
428
+ {%- assign selected = false -%}
429
+ {%- for cat in cats -%}{%- if cat.url == page.url -%}{%- assign selected = true -%}{%- endif -%}{%- endfor -%}
430
+ {%- if selected -%}
431
+ {%- if site.data.setup.drop-down-menu %}
432
+ <div class="item isActiveSelection">
433
+ {%- else %}
434
+ <div class="item-narrow-only isActiveSelection">
435
+ {%- endif -%}
436
+ {%- else -%}
437
+ {%- if site.data.setup.drop-down-menu %}
438
+ <div class="item">
439
+ {%- else %}
440
+ <div class="item-narrow-only">
441
+ {%- endif -%}
442
+ {%- endif %}
443
+ <input type="checkbox" id="category-checkbox">
444
+ <div class="title">
445
+ <label class="symbol" for="category-checkbox">
446
+ {%- if cats.size > 0 %}
447
+ <p class="code"><!-- will be filled by disclosure indicator --></p>
448
+ {%- else -%}
449
+ <p></p>
450
+ {%- endif -%}
451
+ </label>
452
+ <div class="text"><p class="paddingAsLink">{{ categories }}</p></div>
453
+ </div>
454
+ <div class="dropdown">
455
+ {%- for cat in cats %}
456
+ <div class="subitem-separator"><p></p></div>
457
+ {%- if cat.url == page.url %}
458
+ <div class="subitem isActiveSelection">
459
+ {%- else %}
460
+ <div class="subitem">
461
+ {%- endif %}
462
+ <div class="title">
463
+ <div class="symbol"></div>
464
+ <div class="text">
465
+ {%- if cat.url contains "http" -%}
466
+ <a href="{{ cat.url }}"><p>{{ cat.title | capitalize }}</p></a>
467
+ {%- else -%}
468
+ <a href="{{ cat.url | relative_url }}"><p>{{ cat.title | capitalize }}</p></a>
469
+ {%- endif -%}
470
+ </div>
471
+ </div>
472
+ </div>
473
+ {%- endfor %}
474
+ </div>
475
+ </div>
476
+ {%- endif -%}
477
+ {%- endif -%}
478
+ {%- endif %}
479
+
480
+ {%- comment -%}<!-- Account menus -->{%- endcomment -%}
481
+
482
+ {%- if jekyll.environment != 'production' and site.data.setup.fast-content-build -%}{%- else -%}
483
+ {%- include account-menus.html -%}
484
+ {%- endif %}
485
+
486
+ </nav>
487
+ <!-- end of include menubar.html -->