j1-template 2021.0.8 → 2021.0.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/procedures/global/create_bs_button.proc +1 -1
  3. data/assets/data/menu.html +10 -39
  4. data/assets/themes/j1/adapter/js/fam.js +59 -27
  5. data/assets/themes/j1/adapter/js/mmenu.js +9 -4
  6. data/assets/themes/j1/adapter/js/navigator.js +12 -5
  7. data/assets/themes/j1/adapter/js/themer.js +51 -1
  8. data/assets/themes/j1/adapter/js/toccer.js +97 -18
  9. data/assets/themes/j1/core/css/themes/uno-light/bootstrap.css +88 -95
  10. data/assets/themes/j1/core/css/themes/uno-light/bootstrap.min.css +1 -1
  11. data/assets/themes/j1/modules/justifiedGallery/LICENSE +1 -1
  12. data/assets/themes/j1/modules/justifiedGallery/README.md +5 -3
  13. data/assets/themes/j1/modules/justifiedGallery/_versions/v3.8.0/js/{jquery.justifiedGallery.js → justifiedGallery.js} +145 -145
  14. data/assets/themes/j1/modules/justifiedGallery/_versions/v3.8.0/js/{jquery.justifiedGallery.min.js → justifiedGallery.min.js} +1 -2
  15. data/assets/themes/j1/modules/justifiedGallery/js/justifiedGallery.js +69 -53
  16. data/assets/themes/j1/modules/justifiedGallery/js/justifiedGallery.min.js +2 -2
  17. data/assets/themes/j1/modules/themeSwitcher/js/switcher.js +9 -4
  18. data/assets/themes/j1/modules/themeSwitcher/js/switcher.min.js +1 -1
  19. data/lib/j1/commands/generate.rb +2 -2
  20. data/lib/j1/version.rb +1 -1
  21. data/lib/starter_web/Gemfile +1 -1
  22. data/lib/starter_web/_config.yml +2 -2
  23. data/lib/starter_web/_data/apps/justified_gallery.yml +41 -13
  24. data/lib/starter_web/_data/blocks/banner.yml +20 -8
  25. data/lib/starter_web/_data/blocks/defaults/banner.yml +5 -5
  26. data/lib/starter_web/_data/blocks/panel.yml +1 -1
  27. data/lib/starter_web/_data/modules/defaults/themer.yml +1 -0
  28. data/lib/starter_web/_data/modules/defaults/toccer.yml +2 -2
  29. data/lib/starter_web/_data/modules/fam.yml +8 -0
  30. data/lib/starter_web/_data/modules/navigator_menu.yml +31 -31
  31. data/lib/starter_web/_includes/attributes.asciidoc +21 -5
  32. data/lib/starter_web/_plugins/lunr_index.rb +1 -1
  33. data/lib/starter_web/assets/images/collections/blog/featured/markus-spiske-2.jpg +0 -0
  34. data/lib/starter_web/assets/images/collections/blog/featured/staticgen.jpg +0 -0
  35. data/lib/starter_web/assets/images/modules/attics/florian-olivo-1920x1280.jpg +0 -0
  36. data/lib/starter_web/assets/images/modules/attics/joel-filipe-1920x1280.jpg +0 -0
  37. data/lib/starter_web/assets/images/modules/attics/markus-spiske3-1920x1280.jpg +0 -0
  38. data/lib/starter_web/assets/images/modules/attics/markus-spiske4-1920x1280.jpg +0 -0
  39. data/lib/starter_web/assets/images/modules/attics/{runner-1920x1200-bw.jpg → runner-1920x1200.jpg} +0 -0
  40. data/lib/starter_web/assets/images/modules/attics/{the-place-1920x1280-bw.jpg → the-place-1920x1280.jpg} +0 -0
  41. data/lib/starter_web/assets/images/modules/gallery/old_times/colored/image_01.jpg +0 -0
  42. data/lib/starter_web/assets/images/modules/gallery/old_times/image_01.jpg +0 -0
  43. data/lib/starter_web/assets/images/modules/gallery/old_times/image_02.jpg +0 -0
  44. data/lib/starter_web/assets/images/modules/gallery/old_times/image_03.jpg +0 -0
  45. data/lib/starter_web/assets/images/modules/gallery/old_times/image_04.jpg +0 -0
  46. data/lib/starter_web/assets/images/modules/icons/d1/scalable/d1.svg +1 -1
  47. data/lib/starter_web/assets/images/pages/panels/florian-olivo-1920x800.jpg +0 -0
  48. data/lib/starter_web/assets/images/pages/panels/responsive-text-1920x800.jpg +0 -0
  49. data/lib/starter_web/collections/posts/public/featured/_posts/{0000-00-00-welcome-to-j1-template.adoc.erb → 0000-00-00-welcome-to-j1.adoc.erb} +29 -13
  50. data/lib/starter_web/collections/posts/public/featured/_posts/{2020-05-01-top-open-source-static-site-generators.adoc → 2020-05-01-top-site-generators.adoc} +9 -14
  51. data/lib/starter_web/collections/posts/public/featured/_posts/2020-06-01-about-cookies.adoc +57 -53
  52. data/lib/starter_web/dot.gitignore +2 -3
  53. data/lib/starter_web/index.html +8 -8
  54. data/lib/starter_web/package.json +1 -1
  55. data/lib/starter_web/pages/public/about/about_site.adoc +6 -7
  56. data/lib/starter_web/pages/public/asciidoc_skeletons/book/000_intro.adoc +1 -1
  57. data/lib/starter_web/pages/public/asciidoc_skeletons/book/100_chapter.adoc +1 -1
  58. data/lib/starter_web/pages/public/asciidoc_skeletons/book/200_chapter.adoc +1 -1
  59. data/lib/starter_web/pages/public/asciidoc_skeletons/book/900_references.adoc +1 -1
  60. data/lib/starter_web/pages/public/asciidoc_skeletons/book/book.adoc +1 -1
  61. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/100_chapter.asciidoc +1 -1
  62. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/200_chapter.asciidoc +1 -1
  63. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +1 -1
  64. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +4 -5
  65. data/lib/starter_web/pages/public/learn/roundtrip/300_icon_fonts.adoc +79 -46
  66. data/lib/starter_web/pages/public/learn/roundtrip/400_asciidoc_extensions.adoc +0 -7
  67. data/lib/starter_web/pages/public/learn/roundtrip/500_themes.adoc +20 -48
  68. data/lib/starter_web/pages/public/learn/where_to_go.adoc +24 -49
  69. data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +67 -36
  70. data/lib/starter_web/pages/public/previewer/bootstrap_theme.adoc +89 -503
  71. data/lib/starter_web/pages/public/previewer/iframer.adoc +2 -1
  72. data/lib/starter_web/pages/public/previewer/justified_gallery.html +2 -2
  73. data/lib/starter_web/pages/public/previewer/md_color_palette.adoc +2450 -0
  74. data/lib/starter_web/pages/public/previewer/mdi_icons_preview.adoc +4 -4
  75. data/lib/starter_web/pages/public/previewer/rouge.adoc +25 -53
  76. data/lib/starter_web/pages/public/previewer/twitter_emoji_preview.adoc +3 -3
  77. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  78. data/lib/starter_web/utilsrv/package.json +1 -1
  79. metadata +21 -24
  80. data/assets/themes/j1/modules/justifiedGallery/_versions/v3.8.0/justifiedGallery.min.zip +0 -0
  81. data/assets/themes/j1/modules/justifiedGallery/_versions/v3.8.0/justifiedGallery.zip +0 -0
  82. data/assets/themes/j1/modules/justifiedGallery/_versions/v4.0.0/css/justifiedGallery.css +0 -110
  83. data/assets/themes/j1/modules/justifiedGallery/_versions/v4.0.0/css/justifiedGallery.min.css +0 -110
  84. data/assets/themes/j1/modules/justifiedGallery/_versions/v4.0.0/css/theme/uno.css +0 -23
  85. data/assets/themes/j1/modules/justifiedGallery/_versions/v4.0.0/js/jquery.justifiedGallery.js +0 -1229
  86. data/assets/themes/j1/modules/justifiedGallery/_versions/v4.0.0/js/jquery.justifiedGallery.min.js +0 -8
  87. data/lib/j1/templates/posts/0000-00-00-welcome-to-j1-template.adoc.erb +0 -72
  88. data/lib/starter_web/collections/posts/public/featured/_posts/2020-04-01-confusion-about-base-url.adoc +0 -118
  89. data/lib/starter_web/pages/public/legal/de/100_impress.adoc +0 -98
  90. data/lib/starter_web/pages/public/legal/de/200_terms_of_use.adoc +0 -55
  91. data/lib/starter_web/pages/public/legal/de/300_privacy.adoc +0 -295
  92. data/lib/starter_web/pages/public/legal/de/400_license_agreement.adoc +0 -395
  93. data/lib/starter_web/pages/public/legal/de/500_support.adoc +0 -20
  94. data/lib/starter_web/pages/public/legal/en/400_license_agreement.adoc +0 -441
  95. data/lib/starter_web/pages/public/legal/en/500_support.adoc +0 -27
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b2ff92ccb589e2d651e39978eaacca4ed60ac3878a5c9ad7ceee5e3b675649c
4
- data.tar.gz: 6c8f6fec4297206ccef50fdd8f9999c04ef04c8f159b8266a593f7dd6049b118
3
+ metadata.gz: 13942b6ec78f4425ae17a92e9e1dd974feaf522e85f652d9317ebf3d31d71a64
4
+ data.tar.gz: fcdd9cd6204c104cb1954c8fe18f7a54b45c36b384a07172686bc4480f6f59dc
5
5
  SHA512:
6
- metadata.gz: b6e8dbc800b0ca3daaf8d8e1ef22e45b1bdaf484bbe9f26a02f0ce9854cfcc809e9ad10df2901de3845184d4019a6dfc0c90aa9ba1452acf097ea0ce55f8afac
7
- data.tar.gz: cf4e31463bf4cc95ea5e1ce8e18f523a18d173e9eb979e0cbbc1a98c15242d6705bb58b08d30fe2c31a49fdc77e1bf2d6dd15fee12c763f4dd18c2bb447df56e
6
+ metadata.gz: 56f549fdacfec56b84e8f08c8b4282595f055ccefe679c9544edf785b1b2ca3cc949023f2c39574bb26ae146e50b30263c651db54e3e221a7c61767878b6faa5
7
+ data.tar.gz: 351c453b4b4fd28f3be47ebfd6e609e6b798e56d6cd6c54bff74c5230c8bcb24c6431737084bd3840f775cd797274e0a5c87b87562ee91c277d0590a843bbf61
@@ -75,7 +75,7 @@
75
75
  {% endfor %}
76
76
 
77
77
  {% if button_href and button_target %}
78
- {% capture bs_button_html %}<a href="{{button_href}}" target="{{ button_target }}" class="{{button_class}}" style="{{button_style}}"><i class="{{icon_family}} {{icon_family}}-{{button_icon}} {{icon_family}}-{{button_icon_size}} {{icon_family}}-{{button_icon_color}} mr-1"></i> {{button_text}} </a>{% endcapture %}
78
+ {% capture bs_button_html %}<a href="{{button_href}}" target="{{ button_target }}" rel="noopener" class="{{button_class}}" style="{{button_style}}"><i class="{{icon_family}} {{icon_family}}-{{button_icon}} {{icon_family}}-{{button_icon_size}} {{icon_family}}-{{button_icon_color}} mr-1"></i> {{button_text}} </a>{% endcapture %}
79
79
  {% elsif button_href %}
80
80
  {% capture bs_button_html %}<a href="{{button_href}}" class="{{button_class}}" style="{{button_style}}"><i class="{{icon_family}} {{icon_family}}-{{button_icon}} {{icon_family}}-{{button_icon_size}} {{icon_family}}-{{button_icon_color}} mr-1"></i> {{button_text}} </a>{% endcapture %}
81
81
  {% else %}
@@ -192,13 +192,13 @@ regenerate: true
192
192
  {% if level_1.target == null %}
193
193
  <li class="dropdown-item"><a href="{{ level_1.href }}{{ext}}">{{ level_1.title }}</a></li>
194
194
  {% else %}
195
- <li class="dropdown-item"><a href="{{ level_1.href }}{{ext}}" target="{{ level_1.target }}">{{ level_1.title }}</a></li>
195
+ <li class="dropdown-item"><a href="{{ level_1.href }}{{ext}}" target="{{ level_1.target }}" rel="noopener">{{ level_1.title }}</a></li>
196
196
  {% endif %}
197
197
  {% else %}
198
198
  {% if level_1.target == null %}
199
199
  <li class="dropdown-item"><a href="{{ level_1.href }}{{ext}}"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{level_1.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{ level_1.title }}</a></li>
200
200
  {% else %}
201
- <li class="dropdown-item"><a href="{{ level_1.href }}{{ext}}" target="{{ level_1.target }}"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{level_1.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{ level_1.title }}</a></li>
201
+ <li class="dropdown-item"><a href="{{ level_1.href }}{{ext}}" target="{{ level_1.target }}" rel="noopener"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{level_1.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{ level_1.title }}</a></li>
202
202
  {% endif %}
203
203
  {% endif %}
204
204
  {% endif %}
@@ -219,13 +219,13 @@ regenerate: true
219
219
  {% if level_2.target == null %}
220
220
  <li class="dropdown-item"><a href="{{ level_2.href }}{{ext}}">{{ level_2.title }}</a></li>
221
221
  {% else %}
222
- <li class="dropdown-item"><a href="{{ level_2.href }}{{ext}}" target="{{ level_2.target }}">{{ level_2.title }}</a></li>
222
+ <li class="dropdown-item"><a href="{{ level_2.href }}{{ext}}" target="{{ level_2.target }}" rel="noopener">{{ level_2.title }}</a></li>
223
223
  {% endif %}
224
224
  {% else %}
225
225
  {% if level_2.target == null %}
226
226
  <li class="dropdown-item"><a href="{{ level_2.href }}{{ext}}"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{level_2.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{ level_2.title }}</a></li>
227
227
  {% else %}
228
- <li class="dropdown-item"><a href="{{ level_2.href }}{{ext}}" target="{{ level_2.target }}"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{level_2.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{ level_2.title }}</a></li>
228
+ <li class="dropdown-item"><a href="{{ level_2.href }}{{ext}}" target="{{ level_2.target }}" rel="noopener"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{level_2.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{ level_2.title }}</a></li>
229
229
  {% endif %}
230
230
  {% endif %}
231
231
  {% endif %}
@@ -245,13 +245,13 @@ regenerate: true
245
245
  {% if level_3.target == null %}
246
246
  <li class="dropdown-item"><a href="{{ level_3.href }}{{ext}}">{{ level_3.title }}</a></li>
247
247
  {% else %}
248
- <li class="dropdown-item"><a href="{{ level_3.href }}{{ext}}" target="{{ level_3.target }}">{{ level_3.title }}</a></li>
248
+ <li class="dropdown-item"><a href="{{ level_3.href }}{{ext}}" target="{{ level_3.target }}" rel="noopener">{{ level_3.title }}</a></li>
249
249
  {% endif %}
250
250
  {% else %}
251
251
  {% if level_3.target == null %}
252
252
  <li class="dropdown-item"><a href="{{ level_3.href }}{{ext}}"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{level_3.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{ level_3.title }}</a></li>
253
253
  {% else %}
254
- <li class="dropdown-item"><a href="{{ level_3.href }}{{ext}}" target="{{ level_3.target }}"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{level_3.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{ level_3.title }}</a></li>
254
+ <li class="dropdown-item"><a href="{{ level_3.href }}{{ext}}" target="{{ level_3.target }}" rel="noopener"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{level_3.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{ level_3.title }}</a></li>
255
255
  {% endif %}
256
256
  {% endif %}
257
257
  {% if level_3.divider %} <li class="divider"></li> {% endif %}
@@ -299,9 +299,9 @@ regenerate: true
299
299
  <ul class="menu-col">
300
300
  {% for links in megabox.column %}
301
301
  {% if links.icon == null %}
302
- <li class="dropdown-megamenu-item"><a href="{{links.href}}{{ext}}" target="{{ links.target }}">{{links.title}}</a></li>
302
+ <li class="dropdown-megamenu-item"><a href="{{links.href}}{{ext}}" target="{{ links.target }}" rel="noopener">{{links.title}}</a></li>
303
303
  {% else %}
304
- <li class="dropdown-megamenu-item"><a href="{{links.href}}{{ext}}" target="{{ links.target }}"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{links.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{links.title}}</a></li>
304
+ <li class="dropdown-megamenu-item"><a href="{{links.href}}{{ext}}" target="{{ links.target }}" rel="noopener"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{links.icon}} {{nav_menu_icon_size}} mr-2" style="color:{{nav_menu_icon_color}}"></i> {{links.title}}</a></li>
305
305
  {% endif %}
306
306
  {% endfor %}
307
307
  </ul>
@@ -327,14 +327,14 @@ regenerate: true
327
327
  {% if menu.target == null %}
328
328
  <li class="nav-item"> <a class="nav-link" href="{{ menu.href }}{{ext}}">{{ menu.item }}</a> </li>
329
329
  {% else %}
330
- <li class="nav-item"> <a class="nav-link" href="{{ menu.href }}{{ext}}" target="{{ menu.target }}">{{ menu.item }}</a> </li>
330
+ <li class="nav-item"> <a class="nav-link" href="{{ menu.href }}{{ext}}" target="{{ menu.target }}" rel="noopener">{{ menu.item }}</a> </li>
331
331
  {% endif %}
332
332
  {% elsif menu.icon %}
333
333
  <!-- [INFO ] [j1.modules.navigator.menu.html ] [no icon for menu-item found -->
334
334
  {% if menu.target == null %}
335
335
  <li> <a class="nav-link" href="{{ menu.href }}{{ext}}"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{menu.icon}} {{nav_menu_icon_size}}" style="color:{{nav_menu_icon_color}}"></i> {{ menu.item }}</a> </li>
336
336
  {% else %}
337
- <li> <a class="nav-link" href="{{ menu.href }}{{ext}}" target="{{ menu.target }}"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{menu.icon}} {{nav_menu_icon_size}}" style="color:{{nav_menu_icon_color}}"></i> {{ menu.item }}</a> </li>
337
+ <li> <a class="nav-link" href="{{ menu.href }}{{ext}}" target="{{ menu.target }}" rel="noopener"><i class="{{nav_menu_icon_style}} {{nav_menu_icon_family}}-{{menu.icon}} {{nav_menu_icon_size}}" style="color:{{nav_menu_icon_color}}"></i> {{ menu.item }}</a> </li>
338
338
  {% endif %}
339
339
  {% else %}
340
340
  <!-- [FATAL ] [nav_menu.menu-top-level-only ] [processing menu item failed] -->
@@ -465,35 +465,6 @@ regenerate: true
465
465
  {% endfor %}
466
466
  <!-- [INFO ] [j1.modules.navigator.menu.html ] [nav_menu_settings: end menu] -->
467
467
  </ul>
468
-
469
- <style>
470
- /* jadams, 2021-02-16: unclear why global styles defined in CSS file */
471
- /* (bootsttrap.css) not applied. For that reason, given locally for now */
472
- .scrollable-menu {
473
- height: auto;
474
- max-height: 300px;
475
- overflow-x: hidden;
476
- }
477
-
478
- .scrollable-menu::-webkit-scrollbar {
479
- -webkit-appearance: none;
480
- width: 12px;
481
- background-color: #f5f5f5;
482
- }
483
-
484
- .scrollable-menu::-webkit-scrollbar-thumb {
485
- border-radius: 10px;
486
- -webkit-box-shadow: inset 0 0 6px rgba(255, 255, 255, 0.3);
487
- background-color: #424242;
488
- }
489
-
490
- .scrollable-menu::-webkit-scrollbar-track {
491
- -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
492
- border-radius: 0px;
493
- background-color: #f5f5f5;
494
- }
495
- </style>
496
-
497
468
  <!-- [INFO ] [j1.modules.navigator.menu.html ] [nav_menu_settings: end navbar] -->
498
469
  <!-- [INFO ] [j1.modules.navigator.menu.html ] [nav_menu_settings: end processing] -->
499
470
  {% endcapture %}
@@ -396,16 +396,39 @@ j1.adapter['fam'] = (function (j1, window) {
396
396
  var currentNode;
397
397
  var prev_node;
398
398
  var anchor_id;
399
+ var index = 0;
400
+ var maxNode = $(nodes).length-1;
401
+ var $toc = $('#sidebar');
402
+ var current_header_id = $toc.find('.is-active-link').attr('href');
403
+ var toccerScrollDuration = {{toccer_options.scrollSmoothDuration}};
404
+ var toccerScrollOffset = {{toccer_options.scrollSmoothOffset}};
405
+
406
+ // Scroll offset correction if mobile or window width <= 992
407
+ // For smaller window sizes, the height of the menubar changes
408
+ //
409
+ // if (j1.core.isMobile() || $(window).width() <= 992) { scrollOffset += 30; }
410
+
411
+ // calculate offset for correct (smooth) scroll position
412
+ //
413
+ var $pagehead = $('.attic');
414
+ var $navbar = $('nav.navbar');
415
+ var $adblock = $('#adblock');
416
+
417
+ var navbarType = $navbar.hasClass('navbar-fixed') ? 'fixed' : 'scrolled';
418
+ var fontSize = $('body').css('font-size').replace('px','');
419
+ var start = window.pageYOffset;
420
+
421
+ var l = parseInt(fontSize);
422
+
423
+ var h = $pagehead.length ? $pagehead.height() : 0;
424
+ var n = $navbar.length ? $navbar.height() : 0;
425
+ var a = $adblock.length ? $adblock.height() : 0;
399
426
 
400
- var index = 0;
401
- var maxNode = $(nodes).length - 1;
402
- var $toc = $('#sidebar');
403
- var current_header_id = $toc.find('.is-active-link').attr('href');
404
- var scrollDuration = {{toccer_options.scrollSmoothDuration}};
405
- var scrollOffset = {{toccer_options.scrollSmoothOffset}};
427
+ var scrollOffset = navbarType == 'fixed' ? -1*(n + a + l) : -1*(h + n + a + l);
406
428
 
407
- // Correction if mobile (offset: desktop -90px, mobile -80px)
408
- scrollOffset = j1.core.isMobile() ? scrollOffset + 10 : scrollOffset;
429
+ // static offset, to be checked why this is needed
430
+ //
431
+ scrollOffset = scrollOffset + toccerScrollOffset;
409
432
 
410
433
  nodes.each(function () {
411
434
  currentNode = $(this).find(current_header_id);
@@ -418,7 +441,7 @@ j1.adapter['fam'] = (function (j1, window) {
418
441
  anchor_id = '#' + previous_header_id;
419
442
 
420
443
  j1.core.scrollSmooth.scroll( anchor_id, {
421
- duration: scrollDuration,
444
+ duration: toccerScrollDuration,
422
445
  offset: scrollOffset,
423
446
  callback: null
424
447
  });
@@ -439,12 +462,12 @@ j1.adapter['fam'] = (function (j1, window) {
439
462
  var nextNode;
440
463
  var next_header_id;
441
464
  var next_anchor_id;
442
- var index = 0;
443
- var maxNode = $(nodes).length-1;
444
- // var maxNode = $(nodes).length;
445
- var $toc = $('#sidebar');
446
- var scrollDuration = {{toccer_options.scrollSmoothDuration}};
447
- var scrollOffset = {{toccer_options.scrollSmoothOffset}};
465
+ var index = 0;
466
+ var maxNode = $(nodes).length-1;
467
+ var $toc = $('#sidebar');
468
+ var scrollDuration = {{toccer_options.scrollSmoothDuration}};
469
+ var toccerScrollDuration = {{toccer_options.scrollSmoothDuration}};
470
+ var toccerScrollOffset = {{toccer_options.scrollSmoothOffset}};
448
471
 
449
472
  current_header_id = $toc.find('.is-active-link').attr('href');
450
473
  nodes.each(function () {
@@ -453,28 +476,37 @@ j1.adapter['fam'] = (function (j1, window) {
453
476
  if (index == maxNode) {
454
477
  return false;
455
478
  } else {
456
- // nextNode = nodes[index];
457
- // next_header_id = $(nextNode).find(':header').first()[0].id;
458
- // anchor_id = '#' + next_header_id;
459
479
  nextNode = nodes[index+1];
460
480
  next_header_id = $(nextNode).find(':header').first()[0].id;
461
481
  next_anchor_id = '#' + next_header_id;
462
482
 
463
- // Correction if mobile (offset: desktop -90px, mobile -80px)
464
- scrollOffset = j1.core.isMobile() ? scrollOffset + 10 : scrollOffset;
483
+ // calculate offset for correct (smooth) scroll position
484
+ //
485
+ var $pagehead = $('.attic');
486
+ var $navbar = $('nav.navbar');
487
+ var $adblock = $('#adblock');
488
+
489
+ var navbarType = $navbar.hasClass('navbar-fixed') ? 'fixed' : 'scrolled';
490
+ var fontSize = $('body').css('font-size').replace('px','');
491
+ var start = window.pageYOffset;
492
+
493
+ var l = parseInt(fontSize);
465
494
 
466
- // j1.core.scrollSmooth.scroll( next_anchor_id, {
467
- // duration: scrollDuration,
468
- // offset: scrollOffset,
469
- // callback: tocbot.refresh()
470
- // });
495
+ var h = $pagehead.length ? $pagehead.height() : 0;
496
+ var n = $navbar.length ? $navbar.height() : 0;
497
+ var a = $adblock.length ? $adblock.height() : 0;
498
+
499
+ var scrollOffset = navbarType == 'fixed' ? -1*(n + a + l) : -1*(h + n + a + l);
500
+
501
+ // static offset, to be checked why this is needed
502
+ //
503
+ scrollOffset = scrollOffset + toccerScrollOffset;
471
504
 
472
505
  j1.core.scrollSmooth.scroll( next_anchor_id, {
473
- duration: scrollDuration,
506
+ duration: toccerScrollDuration,
474
507
  offset: scrollOffset,
475
508
  callback: null
476
509
  });
477
-
478
510
  }
479
511
  }
480
512
  index < maxNode ? index++ : index;
@@ -311,10 +311,15 @@ j1.adapter['mmenu'] = (function (j1, window) {
311
311
 
312
312
  // jadams, 2020-09-30: loading the menues (themes) if enabled
313
313
  if (themerEnabled) {
314
- // from Bootswatch API (set localFeed EMPTY)
315
- $('#remote_themes_mmenu').bootstrapThemeSwitcher({localFeed: ''});
316
- // load (local) J1 themes (default settings) from JSON data
317
- $('#local_themes_mmenu').bootstrapThemeSwitcher();
314
+ // load REMOTE themes from Bootswatch API (localFeed EMPTY!)
315
+ $('#remote_themes_mmenu').bootstrapThemeSwitcher({
316
+ localFeed: '',
317
+ bootswatchApiVersion: themerOptions.bootswatchApiVersion
318
+ });
319
+ // load LOCAL themes from JSON data
320
+ $('#local_themes_mmenu').bootstrapThemeSwitcher({
321
+ localFeed: themerOptions.localThemes
322
+ });
318
323
  }
319
324
 
320
325
  $('#{{item.menu.content.id}}').show();
@@ -347,14 +347,21 @@ j1.adapter['navigator'] = (function (j1, window) {
347
347
  logText = 'theme switcher detect: enabled';
348
348
  logger.info(logText);
349
349
 
350
- // load remote themes (Bootswatch API)
351
- logText = 'load remote themes (Bootswatch API)';
350
+ logText = 'load themes';
352
351
  logger.info(logText);
353
- $('#remote_themes').bootstrapThemeSwitcher({localFeed: ''});
354
- // load local themes (json file)
352
+
353
+ // load REMOTE themes from Bootswatch API (localFeed EMPTY!)
354
+ $('#remote_themes').bootstrapThemeSwitcher({
355
+ localFeed: '',
356
+ bootswatchApiVersion: themerOptions.bootswatchApiVersion
357
+ });
358
+
359
+ // load LOCAL themes from JSON data
355
360
  logText = 'load local themes (json file)';
356
361
  logger.info(logText);
357
- $('#local_themes').bootstrapThemeSwitcher({localFeed: themerOptions.localThemes});
362
+ $('#local_themes').bootstrapThemeSwitcher({
363
+ localFeed: themerOptions.localThemes
364
+ });
358
365
  clearInterval(dependencies_met_page_finished);
359
366
  }
360
367
  _this.setState('initialized');
@@ -187,7 +187,8 @@ j1.adapter['themer'] = (function (j1, window) {
187
187
 
188
188
  j1.writeCookie({
189
189
  name: cookie_user_state_name,
190
- data: user_state
190
+ data: user_state,
191
+ expires: 365 // was missing
191
192
  });
192
193
 
193
194
  // jadams, 2021-01-03: dependency has to be checked in more detail
@@ -196,10 +197,19 @@ j1.adapter['themer'] = (function (j1, window) {
196
197
  if (j1.getState() == 'finished') {
197
198
  if (themerOptions.enabled) {
198
199
  // enable BS ThemeSwitcher
200
+ //
199
201
  logger.info('themes detected as: enabled');
200
202
  logger.info('theme is being initialized: ' + user_state.theme_name);
201
203
 
204
+ // jadams, 2021-02-22: make sure that remote themes are loaded
205
+ // max retries = max_count
206
+
207
+ // load list of remote themes
208
+ //
202
209
  if ( $('#remote_themes').length ) {
210
+ var interval_count = 0;
211
+ var max_count = themerOptions.retries;
212
+
203
213
  /* eslint-disable */
204
214
  // initialize Bootswatch Theme Switcher
205
215
  $('#remote_themes').bootstrapThemeSwitcher.defaults = {
@@ -223,6 +233,46 @@ j1.adapter['themer'] = (function (j1, window) {
223
233
  }
224
234
  /* eslint-enable */
225
235
 
236
+ // jadams, 2021-02-16: load checking disabled. Seem does NOT
237
+ // solve the problem
238
+
239
+ // var dependencies_met_remote_themes_loaded = setInterval(function() {
240
+ // interval_count += 1;
241
+ // if ( document.getElementById("remote_themes").getElementsByTagName("li").length == 0 ) {
242
+ // /* eslint-disable */
243
+ // // initialize Bootswatch Theme Switcher
244
+ // $('#remote_themes').bootstrapThemeSwitcher.defaults = {
245
+ // debug: themerOptions.debug,
246
+ // saveToCookie: themerOptions.saveToCookie,
247
+ // cssThemeLink: themerOptions.cssThemeLink,
248
+ // cookieThemeName: themerOptions.cookieThemeName,
249
+ // cookieDefaultThemeName: themerOptions.cookieDefaultThemeName,
250
+ // cookieThemeCss: themerOptions.cookieThemeCss,
251
+ // cookieThemeExtensionCss: themerOptions.cookieThemeExtensionCss,
252
+ // cookieExpiration: themerOptions.cookieExpiration,
253
+ // cookiePath: themerOptions.cookiePath,
254
+ // defaultCssFile: themerOptions.defaultCssFile,
255
+ // bootswatchApiUrl: themerOptions.bootswatchApiUrl,
256
+ // bootswatchApiVersion: themerOptions.bootswatchApiVersion,
257
+ // loadFromBootswatch: themerOptions.loadFromBootswatch,
258
+ // localFeed: themerOptions.localThemes,
259
+ // excludeBootswatch: themerOptions.excludeBootswatch,
260
+ // includeBootswatch: themerOptions.includeBootswatch,
261
+ // skipIncludeBootswatch: themerOptions.skipIncludeBootswatch
262
+ // }
263
+ // /* eslint-enable */
264
+ // } else {
265
+ // logger.info('remote themes loaded: successfully');
266
+ // logger.debug('remote themes loaded: successfully after: ' + interval_count * 25 + ' ms');
267
+ // clearInterval(dependencies_met_remote_themes_loaded);
268
+ // }
269
+ // if (interval_count > max_count) {
270
+ // logger.warn('remote themes loading: failed');
271
+ // logger.warn('continue processing');
272
+ // clearInterval(dependencies_met_remote_themes_loaded);
273
+ // }
274
+ // }, 25);
275
+
226
276
  logger.info('theme loaded: ' + user_state.theme_name);
227
277
  logger.info('theme css file: ' + user_state.theme_css);
228
278
  _this.setState('finished');
@@ -194,23 +194,23 @@ j1.adapter['toccer'] = (function () {
194
194
  // calculate (tocbot page) offset DYMICALLY for correct
195
195
  // smoothscroll position
196
196
  //
197
- var $pagehead = $('.attic');
198
- var $navbar = $('nav.navbar');
199
- var $adblock = $('#adblock');
200
-
201
- var navbarType = $navbar.hasClass('navbar-fixed') ? 'fixed' : 'scrolled';
202
- var fontSize = $('body').css('font-size').replace('px','');
203
- var start = window.pageYOffset;
204
-
205
- var l = parseInt(fontSize);
206
-
207
- var h = $pagehead.length ? $pagehead.height() : 0;
208
- var n = $navbar.length ? $navbar.height() : 0;
209
- var a = $adblock.length ? $adblock.height() : 0;
210
-
211
- var o = navbarType == 'fixed' ? -1*(n + a + l) : -1*(h + n + a + l);
212
-
213
- settings.scrollSmoothOffset = o;
197
+ // var $pagehead = $('.attic');
198
+ // var $navbar = $('nav.navbar');
199
+ // var $adblock = $('#adblock');
200
+ //
201
+ // var navbarType = $navbar.hasClass('navbar-fixed') ? 'fixed' : 'scrolled';
202
+ // var fontSize = $('body').css('font-size').replace('px','');
203
+ // var start = window.pageYOffset;
204
+ //
205
+ // var l = parseInt(fontSize);
206
+ //
207
+ // var h = $pagehead.length ? $pagehead.height() : 0;
208
+ // var n = $navbar.length ? $navbar.height() : 0;
209
+ // var a = $adblock.length ? $adblock.height() : 0;
210
+ //
211
+ // var o = navbarType == 'fixed' ? -1*(n + a + l) : -1*(h + n + a + l);
212
+ //
213
+ // settings.scrollSmoothOffset = o;
214
214
 
215
215
  _this.initToccerCore(settings);
216
216
 
@@ -228,6 +228,7 @@ j1.adapter['toccer'] = (function () {
228
228
  // Set Toccer options
229
229
  // -------------------------------------------------------------------------
230
230
  initToccerCore: function (options) {
231
+ var scrollOffset;
231
232
 
232
233
  if (options !== undefined) {
233
234
  var settings = $.extend({}, options);
@@ -235,10 +236,33 @@ j1.adapter['toccer'] = (function () {
235
236
  var settings = false;
236
237
  }
237
238
 
239
+ // calculate offset for correct (smooth) scroll position
240
+ //
241
+ var $pagehead = $('.attic');
242
+ var $navbar = $('nav.navbar');
243
+ var $adblock = $('#adblock');
244
+
245
+ var navbarType = $navbar.hasClass('navbar-fixed') ? 'fixed' : 'scrolled';
246
+ var fontSize = $('body').css('font-size').replace('px','');
247
+ var start = window.pageYOffset;
248
+
249
+ var l = parseInt(fontSize);
250
+
251
+ var h = $pagehead.length ? $pagehead.height() : 0;
252
+ var n = $navbar.length ? $navbar.height() : 0;
253
+ var a = $adblock.length ? $adblock.height() : 0;
254
+
255
+ scrollOffset = navbarType == 'fixed' ? -1*(n + a + l) : -1*(h + n + a + l);
256
+
257
+ // static offset, to be checked why this is needed
258
+ //
259
+ scrollOffset = scrollOffset + moduleOptions.scrollSmoothOffset
260
+
238
261
  _this.setState('running');
239
262
  logger.info('state: ' + _this.getState());
240
263
 
241
264
  // tocbot get fired if HTML portion is loaded (AJAX load finished)
265
+ //
242
266
  var dependencies_met_ajax_load_finished = setInterval (function () {
243
267
  if ($('#toc_mmenu').length) {
244
268
  /* eslint-disable */
@@ -267,7 +291,7 @@ j1.adapter['toccer'] = (function () {
267
291
  scrollContainer: null,
268
292
  scrollSmooth: moduleOptions.scrollSmooth,
269
293
  scrollSmoothDuration: moduleOptions.scrollSmoothDuration,
270
- scrollSmoothOffset: moduleOptions.scrollSmoothOffset,
294
+ scrollSmoothOffset: scrollOffset,
271
295
  headingsOffset: 1,
272
296
  throttleTimeout: moduleOptions.throttleTimeout
273
297
  });
@@ -276,6 +300,61 @@ j1.adapter['toccer'] = (function () {
276
300
  clearInterval(dependencies_met_ajax_load_finished);
277
301
  } // END AJAX load finished
278
302
  }, 25); // END dependencies_met_ajax_load_finished
303
+
304
+ $(window).on('resize', function() {
305
+ var scrollOffset;
306
+ // re-calculate offset for correct (smooth) scroll position
307
+ //
308
+ var $pagehead = $('.attic');
309
+ var $navbar = $('nav.navbar');
310
+ var $adblock = $('#adblock');
311
+
312
+ var navbarType = $navbar.hasClass('navbar-fixed') ? 'fixed' : 'scrolled';
313
+ var fontSize = $('body').css('font-size').replace('px','');
314
+ var start = window.pageYOffset;
315
+
316
+ var l = parseInt(fontSize);
317
+
318
+ var h = $pagehead.length ? $pagehead.height() : 0;
319
+ var n = $navbar.length ? $navbar.height() : 0;
320
+ var a = $adblock.length ? $adblock.height() : 0;
321
+
322
+ scrollOffset = navbarType == 'fixed' ? -1*(n + a + l) : -1*(h + n + a + l);
323
+
324
+ // static offset, to be checked why this is needed
325
+ //
326
+ scrollOffset = scrollOffset + moduleOptions.scrollSmoothOffset
327
+
328
+ tocbot.refresh({
329
+ log: moduleOptions.log,
330
+ activeLinkColor: moduleOptions.activeLinkColor,
331
+ tocSelector: moduleOptions.tocSelector,
332
+ headingSelector: moduleOptions.headingSelector,
333
+ ignoreSelector: moduleOptions.ignoreSelector,
334
+ contentSelector: moduleOptions.contentSelector,
335
+ collapseDepth: moduleOptions.collapseDepth,
336
+ throttleTimeout: moduleOptions.throttleTimeout,
337
+ hasInnerContainers: false,
338
+ includeHtml: false,
339
+ linkClass: 'toc-link',
340
+ extraLinkClasses: '',
341
+ activeLinkClass: 'is-active-link',
342
+ listClass: 'toc-list',
343
+ extraListClasses: '',
344
+ isCollapsedClass: 'is-collapsed',
345
+ collapsibleClass: 'is-collapsible',
346
+ listItemClass: 'toc-list-item',
347
+ positionFixedSelector: '',
348
+ positionFixedClass: 'is-position-fixed',
349
+ fixedSidebarOffset: 'auto',
350
+ scrollContainer: null,
351
+ scrollSmooth: moduleOptions.scrollSmooth,
352
+ scrollSmoothDuration: moduleOptions.scrollSmoothDuration,
353
+ scrollSmoothOffset: scrollOffset,
354
+ headingsOffset: 1,
355
+ throttleTimeout: moduleOptions.throttleTimeout
356
+ });
357
+ });
279
358
  }, // END initToccerCore
280
359
 
281
360
  // -------------------------------------------------------------------------