j1-template 2021.1.13 → 2021.1.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (144) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/blocks/footer/boxes/issue.proc +28 -5
  3. data/_includes/themes/j1/blocks/footer/boxes/legal_statements.proc +66 -23
  4. data/_includes/themes/j1/blocks/footer/boxes/links_box.proc +0 -1
  5. data/_includes/themes/j1/blocks/footer/boxes/news_box.proc +16 -1
  6. data/_includes/themes/j1/layouts/content_generator_blog_archive.html +197 -219
  7. data/_includes/themes/j1/layouts/content_generator_collection.html +4 -2
  8. data/_includes/themes/j1/layouts/content_generator_post.html +34 -24
  9. data/_includes/themes/j1/layouts/layout_metadata_generator.html +30 -7
  10. data/_includes/themes/j1/modules/navigator/procedures/topsearch.proc +2 -2
  11. data/_includes/themes/j1/procedures/posts/collate_timeline.proc +27 -5
  12. data/_includes/themes/j1/procedures/posts/create_series_header.proc +1 -1
  13. data/_includes/themes/j1/procedures/posts/pager.proc +123 -0
  14. data/_layouts/default.html +2 -2
  15. data/assets/data/authclient.html +1 -0
  16. data/assets/data/banner.html +1 -0
  17. data/assets/data/carousel.json +1 -0
  18. data/assets/data/cookieconsent.html +1 -2
  19. data/assets/data/fam.html +1 -0
  20. data/assets/data/footer.html +1 -0
  21. data/assets/data/galleries.json +1 -0
  22. data/assets/data/gallery_customizer.html +1 -0
  23. data/assets/data/mdi_icons.json +1 -0
  24. data/assets/data/menu.html +2 -1
  25. data/assets/data/mmenu.html +1 -0
  26. data/assets/data/mmenu_sidebar.html +1 -0
  27. data/assets/data/mmenu_toc.html +21 -1
  28. data/assets/data/panel.html +29 -7
  29. data/assets/data/quicklinks.html +1 -0
  30. data/assets/data/themes.json +1 -0
  31. data/assets/data/twa_v1.json +1 -0
  32. data/assets/error_pages/HTTP204.html +17 -2
  33. data/assets/error_pages/HTTP400.html +17 -2
  34. data/assets/error_pages/HTTP401.html +17 -2
  35. data/assets/error_pages/HTTP403.html +17 -2
  36. data/assets/error_pages/HTTP404.html +17 -2
  37. data/assets/error_pages/HTTP444.html +17 -2
  38. data/assets/error_pages/HTTP500.html +17 -2
  39. data/assets/error_pages/HTTP501.html +17 -2
  40. data/assets/error_pages/HTTP502.html +17 -2
  41. data/assets/error_pages/HTTP503.html +17 -3
  42. data/assets/themes/j1/adapter/js/cookieConsent.js +9 -8
  43. data/assets/themes/j1/adapter/js/j1.js +137 -65
  44. data/assets/themes/j1/adapter/js/navigator.js +7 -0
  45. data/assets/themes/j1/adapter/js/themer.js +16 -26
  46. data/assets/themes/j1/core/css/themes/uno-light/bootstrap.css +21 -42
  47. data/assets/themes/j1/core/css/themes/uno-light/bootstrap.min.css +1 -1
  48. data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.min.js +2 -288
  49. data/assets/themes/j1/modules/themeSwitcher/js/switcher.js +60 -41
  50. data/assets/themes/j1/modules/themeSwitcher/js/switcher.min.js +75 -57
  51. data/lib/j1/version.rb +1 -1
  52. data/lib/starter_web/Gemfile +4 -5
  53. data/lib/starter_web/_config.yml +7 -1
  54. data/lib/starter_web/_data/blocks/footer.yml +52 -20
  55. data/lib/starter_web/_data/blocks/panel.yml +4 -4
  56. data/lib/starter_web/_data/builder/blog_navigator.yml +9 -192
  57. data/lib/starter_web/_data/builder/defaults/blog_navigator.yml +389 -0
  58. data/lib/starter_web/_data/j1_config.yml +55 -39
  59. data/lib/starter_web/_data/locales/be.yml +269 -0
  60. data/lib/starter_web/_data/locales/cs.yml +218 -0
  61. data/lib/starter_web/_data/locales/da.yml +213 -0
  62. data/lib/starter_web/_data/locales/de.yml +222 -0
  63. data/lib/starter_web/_data/locales/el.yml +215 -0
  64. data/lib/starter_web/_data/locales/en.yml +215 -0
  65. data/lib/starter_web/_data/locales/es.yml +219 -0
  66. data/lib/starter_web/_data/locales/et.yml +207 -0
  67. data/lib/starter_web/_data/locales/fi.yml +211 -0
  68. data/lib/starter_web/_data/locales/fr.yml +219 -0
  69. data/lib/starter_web/_data/locales/hr.yml +240 -0
  70. data/lib/starter_web/_data/locales/hu.yml +196 -0
  71. data/lib/starter_web/_data/locales/it.yml +215 -0
  72. data/lib/starter_web/_data/locales/lv.yml +233 -0
  73. data/lib/starter_web/_data/locales/nl.yml +213 -0
  74. data/lib/starter_web/_data/locales/pl.yml +241 -0
  75. data/lib/starter_web/_data/locales/pt.yml +217 -0
  76. data/lib/starter_web/_data/locales/readme +4 -0
  77. data/lib/starter_web/_data/locales/ro.yml +209 -0
  78. data/lib/starter_web/_data/locales/ru.yml +269 -0
  79. data/lib/starter_web/_data/locales/sk.yml +211 -0
  80. data/lib/starter_web/_data/locales/sl.yml +209 -0
  81. data/lib/starter_web/_data/locales/sv.yml +207 -0
  82. data/lib/starter_web/_data/modules/defaults/cookieconsent.yml +10 -10
  83. data/lib/starter_web/_data/modules/defaults/quicksearch.yml +6 -5
  84. data/lib/starter_web/_data/modules/defaults/themer.yml +1 -0
  85. data/lib/starter_web/_data/modules/quicksearch.yml +4 -1
  86. data/lib/starter_web/_data/modules/themer.yml +1 -0
  87. data/lib/starter_web/_data/plugins/defaults/paginator.yml +7 -6
  88. data/lib/starter_web/_data/plugins/paginator.yml +3 -0
  89. data/lib/starter_web/_includes/attributes.asciidoc +1 -1
  90. data/lib/starter_web/_plugins/date-i18n.rb +67 -0
  91. data/lib/starter_web/_plugins/lunr_index.rb +5 -1
  92. data/lib/starter_web/assets/images/modules/attics/markus-spiske-1920x1280.jpg +0 -0
  93. data/lib/starter_web/assets/images/modules/attics/matthew-dockery-1920x1280.jpg +0 -0
  94. data/lib/starter_web/collections/posts/public/featured/_posts/2020-01-01-about-cookies.adoc +1 -1
  95. data/lib/starter_web/collections/posts/public/featured/_posts/2021-03-01-site-generators.adoc +1 -1
  96. data/lib/starter_web/collections/posts/public/featured/_posts/2021-03-03-about-j1.adoc +1 -1
  97. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-01-post-test-series.adoc +2 -2
  98. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-02-post-test-series.adoc +2 -2
  99. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-03-post-test-series.adoc +2 -2
  100. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-04-post-test-series.adoc +2 -2
  101. data/lib/starter_web/collections/posts/public/wikipedia/_posts/2016-11-20-minneapolis.adoc +1 -1
  102. data/lib/starter_web/collections/posts/public/wikipedia/_posts/2016-11-24-narcisse-snake-dens.adoc +1 -1
  103. data/lib/starter_web/index.html +5 -2
  104. data/lib/starter_web/package.json +1 -1
  105. data/lib/starter_web/pages/public/asciidoc_skeletons/book/000_intro.adoc +2 -2
  106. data/lib/starter_web/pages/public/asciidoc_skeletons/book/100_chapter.adoc +2 -2
  107. data/lib/starter_web/pages/public/asciidoc_skeletons/book/200_chapter.adoc +2 -2
  108. data/lib/starter_web/pages/public/asciidoc_skeletons/book/900_references.adoc +2 -2
  109. data/lib/starter_web/pages/public/asciidoc_skeletons/book/book.adoc +2 -2
  110. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/100_chapter.asciidoc +2 -2
  111. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/200_chapter.asciidoc +2 -2
  112. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +2 -2
  113. data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +2 -2
  114. data/lib/starter_web/pages/public/blog/navigator/archive.html +82 -17
  115. data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +92 -28
  116. data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +85 -20
  117. data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +98 -41
  118. data/lib/starter_web/pages/public/blog/navigator/index.html +2 -1
  119. data/lib/starter_web/pages/public/learn/quickstart.adoc +473 -0
  120. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +2 -2
  121. data/lib/starter_web/pages/public/learn/roundtrip/100_present_videos.adoc +2 -2
  122. data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +2 -2
  123. data/lib/starter_web/pages/public/learn/roundtrip/300_icon_fonts.adoc +2 -2
  124. data/lib/starter_web/pages/public/learn/roundtrip/400_asciidoc_extensions.adoc +2 -2
  125. data/lib/starter_web/pages/public/learn/roundtrip/410_bs_modals_extentions.adoc +2 -2
  126. data/lib/starter_web/pages/public/learn/roundtrip/420_responsive_tables_extensions.adoc +2 -2
  127. data/lib/starter_web/pages/public/learn/roundtrip/500_themes.adoc +2 -2
  128. data/lib/starter_web/pages/public/learn/roundtrip/600_quicksearch.adoc +2 -2
  129. data/lib/starter_web/pages/public/legal/de/100_copyright.adoc +118 -0
  130. data/lib/starter_web/pages/public/legal/de/100_impress.adoc +90 -0
  131. data/lib/starter_web/pages/public/legal/de/300_privacy.adoc +322 -0
  132. data/lib/starter_web/pages/public/legal/de/400_comment_policy.adoc +125 -0
  133. data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +8 -5
  134. data/lib/starter_web/pages/public/legal/en/200_impress.adoc +7 -5
  135. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +10 -8
  136. data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +36 -18
  137. data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +3 -2
  138. data/lib/starter_web/pages/public/previewer/iframer.adoc +1 -1
  139. data/lib/starter_web/pages/public/previewer/rouge.adoc +1 -1
  140. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  141. data/lib/starter_web/utilsrv/package.json +1 -1
  142. metadata +35 -4
  143. data/_includes/themes/j1/procedures/global/pager.proc +0 -79
  144. data/lib/starter_web/pages/public/cookieConsent.adoc +0 -96
@@ -1,4 +1,13 @@
1
1
  ---
2
+ date: 2021-01-01 00:00:00
3
+ description: >
4
+ Customized HTML error page
5
+
6
+ categories: [ Error page ]
7
+ tags: [ HTML, 501 ]
8
+
9
+ exclude_from_search: true
10
+
2
11
  regenerate: false
3
12
  permalink: /501.html
4
13
  http_error: 501
@@ -43,8 +52,14 @@ sitemap: false
43
52
 
44
53
  {% capture brand_image %}{{images_dir}}/{{brand_image_source}}{% endcapture %}
45
54
 
46
- {% if language != 'en' or language != 'de' %}
47
- {% assign language = 'en' %}
55
+ {% comment %} language detection
56
+ -------------------------------------------------------------------------------- {% endcomment %}
57
+ {% if site.language == "en" %}
58
+ {% assign language = "en" %}
59
+ {% elsif site.language == "de"%}
60
+ {% assign language = "de" %}
61
+ {% else %}
62
+ {% assign language = "en" %}
48
63
  {% endif %}
49
64
 
50
65
  {% if language == 'en' %}
@@ -1,4 +1,13 @@
1
1
  ---
2
+ date: 2021-01-01 00:00:00
3
+ description: >
4
+ Customized HTML error page
5
+
6
+ categories: [ Error page ]
7
+ tags: [ HTML, 502 ]
8
+
9
+ exclude_from_search: true
10
+
2
11
  regenerate: false
3
12
  permalink: /502.html
4
13
  http_error: 502
@@ -43,8 +52,14 @@ sitemap: false
43
52
 
44
53
  {% capture brand_image %}{{images_dir}}/{{brand_image_source}}{% endcapture %}
45
54
 
46
- {% if language != 'en' or language != 'de' %}
47
- {% assign language = 'en' %}
55
+ {% comment %} language detection
56
+ -------------------------------------------------------------------------------- {% endcomment %}
57
+ {% if site.language == "en" %}
58
+ {% assign language = "en" %}
59
+ {% elsif site.language == "de"%}
60
+ {% assign language = "de" %}
61
+ {% else %}
62
+ {% assign language = "en" %}
48
63
  {% endif %}
49
64
 
50
65
  {% if language == 'en' %}
@@ -1,4 +1,12 @@
1
- ---
1
+ ---date: 2021-01-01 00:00:00
2
+ description: >
3
+ Customized HTML error page
4
+
5
+ categories: [ Error page ]
6
+ tags: [ HTML, 503 ]
7
+
8
+ exclude_from_search: true
9
+
2
10
  regenerate: false
3
11
  permalink: /503.html
4
12
  http_error: 503
@@ -45,8 +53,14 @@ sitemap: false
45
53
 
46
54
  {% capture brand_image %}{{images_dir}}/{{brand_image_source}}{% endcapture %}
47
55
 
48
- {% if language != 'en' or language != 'de' %}
49
- {% assign language = 'en' %}
56
+ {% comment %} language detection
57
+ -------------------------------------------------------------------------------- {% endcomment %}
58
+ {% if site.language == "en" %}
59
+ {% assign language = "en" %}
60
+ {% elsif site.language == "de"%}
61
+ {% assign language = "de" %}
62
+ {% else %}
63
+ {% assign language = "en" %}
50
64
  {% endif %}
51
65
 
52
66
  {% if language == 'en' %}
@@ -39,7 +39,7 @@ regenerate: true
39
39
  {% assign tracking_enabled = template_config.analytics.enabled %}
40
40
  {% assign tracking_id = template_config.analytics.google.tracking_id %}
41
41
 
42
- {% assign comment_provider = site.data.j1_config.comments.provider %}
42
+ {% assign comment_provider = site.data.j1_config.comments.provider %}
43
43
 
44
44
  {% comment %} Set config options
45
45
  -------------------------------------------------------------------------------- {% endcomment %}
@@ -101,6 +101,7 @@ j1.adapter['cookieConsent'] = (function (j1, window) {
101
101
  var secure;
102
102
  var logText;
103
103
  var cookie_written;
104
+ var language;
104
105
 
105
106
  // NOTE: RegEx for tracking_id: ^(G|UA|YT|MO)-[a-zA-Z0-9-]+$
106
107
  // See: https://stackoverflow.com/questions/20411767/how-to-validate-google-analytics-tracking-id-using-a-javascript-function/20412153
@@ -129,6 +130,7 @@ j1.adapter['cookieConsent'] = (function (j1, window) {
129
130
  hostname = url.hostname;
130
131
  domain = hostname.substring(hostname.lastIndexOf('.', hostname.lastIndexOf('.') - 1) + 1);
131
132
  secure = (url.protocol.includes('https')) ? true : false;
133
+ language = "{{site.language}}";
132
134
 
133
135
  // set domain used by cookies
134
136
  if(domain !== 'localhost') {
@@ -171,10 +173,10 @@ j1.adapter['cookieConsent'] = (function (j1, window) {
171
173
  j1.cookieConsent = new BootstrapCookieConsent({
172
174
  contentURL: moduleOptions.contentURL,
173
175
  cookieName: moduleOptions.cookieName,
174
- language: moduleOptions.language,
176
+ language: language,
175
177
  whitelisted: moduleOptions.whitelisted,
176
178
  reloadPageOnChange: moduleOptions.reloadPageOnChange,
177
- xhr_data_element: moduleOptions.xhr_data_element + '-' + moduleOptions.language,
179
+ xhr_data_element: moduleOptions.xhr_data_element + '-' + language,
178
180
  sameSite: moduleOptions.sameSite,
179
181
  secure: secure,
180
182
  postSelectionCallback: function () {j1.adapter.cookieConsent.cbCookie()}
@@ -263,11 +265,10 @@ j1.adapter['cookieConsent'] = (function (j1, window) {
263
265
  // logger.warn('\n' + 'tracking enabled, tracking id found: ' + tracking_id);
264
266
  // }
265
267
 
266
- // for development only
267
- if (environment === 'development') {
268
- gaCookies.forEach(item => console.log('cookieConsent: ' + item));
269
- j1Cookies.forEach(item => console.log('cookieConsent: ' + item));
270
- }
268
+ logger.debug('\n' + 'j1 cookies found:' + j1Cookies.length);
269
+ j1Cookies.forEach(item => console.log('j1.core.switcher: ' + item));
270
+ logger.debug('\n' + 'ga cookies found:' + gaCookies.length);
271
+ gaCookies.forEach(item => console.log('j1.core.switcher: ' + item));
271
272
 
272
273
  if (user_agent.includes('iPad')) {
273
274
  logger.warn('\n' + 'product detected : ' + platform.product);
@@ -41,41 +41,44 @@ regenerate: true
41
41
 
42
42
  {% comment %} Set config files
43
43
  -------------------------------------------------------------------------------- {% endcomment %}
44
- {% assign blocks = site.data.blocks %}
45
- {% assign modules = site.data.modules %}
46
- {% assign template_config = site.data.j1_config %}
44
+ {% assign blocks = site.data.blocks %}
45
+ {% assign modules = site.data.modules %}
46
+ {% assign template_config = site.data.j1_config %}
47
47
 
48
48
  {% comment %} Set config data
49
49
  -------------------------------------------------------------------------------- {% endcomment %}
50
- {% assign banner_config_defaults = blocks.defaults.banner.defaults %}
51
- {% assign banner_config_settings = blocks.banner.settings %}
52
- {% assign panel_config_defaults = blocks.defaults.panel.defaults %}
53
- {% assign panel_config_settings = blocks.panel.settings %}
54
- {% assign footer_config_defaults = blocks.defaults.footer.defaults %}
55
- {% assign toccer_defaults = modules.defaults.toccer.defaults %}
56
- {% assign toccer_settings = modules.toccer.settings %}
57
- {% assign themer_defaults = modules.defaults.themer.defaults %}
58
- {% assign themer_settings = modules.themer.settings %}
59
- {% assign tracking_enabled = template_config.analytics.enabled %}
60
- {% assign tracking_id = template_config.analytics.google.tracking_id %}
61
-
62
- {% assign authentication_defaults = modules.defaults.authentication.defaults %}
63
- {% assign authentication_settings = modules.authentication.settings %}
50
+ {% assign banner_config_defaults = blocks.defaults.banner.defaults %}
51
+ {% assign banner_config_settings = blocks.banner.settings %}
52
+ {% assign panel_config_defaults = blocks.defaults.panel.defaults %}
53
+ {% assign panel_config_settings = blocks.panel.settings %}
54
+ {% assign footer_config_defaults = blocks.defaults.footer.defaults %}
55
+ {% assign toccer_defaults = modules.defaults.toccer.defaults %}
56
+
57
+ {% assign themer_defaults = modules.defaults.themer.defaults %}
58
+ {% assign themer_settings = modules.themer.settings %}
59
+
60
+ {% assign tracking_enabled = template_config.analytics.enabled %}
61
+ {% assign tracking_id = template_config.analytics.google.tracking_id %}
62
+
63
+ {% assign authentication_defaults = modules.defaults.authentication.defaults %}
64
+ {% assign authentication_settings = modules.authentication.settings %}
64
65
 
65
66
  {% comment %} Set config options
66
67
  -------------------------------------------------------------------------------- {% endcomment %}
67
- {% assign toccer_options = toccer_defaults | merge: toccer_settings %}
68
- {% assign themer_options = themer_defaults | merge: themer_settings %}
68
+ {% assign toccer_options = toccer_defaults | merge: toccer_settings %}
69
+ {% assign themer_options = themer_defaults| merge: themer_settings %}
69
70
 
70
- {% assign authentication_options = authentication_defaults | merge: authentication_settings %}
71
+ {% assign authentication_options = authentication_defaults | merge: authentication_settings %}
71
72
 
72
- {% assign footer_id = footer_config_defaults.container-id %}
73
- {% assign footer_data_path = footer_config_defaults.data_path %}
74
- {% assign banner_data_path = banner_config_defaults.data_path %}
75
- {% assign panel_data_path = panel_config_defaults.data_path %}
73
+ {% assign footer_id = footer_config_defaults.container-id %}
74
+ {% assign footer_data_path = footer_config_defaults.data_path %}
75
+ {% assign banner_data_path = banner_config_defaults.data_path %}
76
+ {% assign panel_data_path = panel_config_defaults.data_path %}
76
77
 
77
- {% assign hideOnReload = modules.themer_options.hideOnReload %}
78
- {% assign comment_provider = template_config.comments.provider %}
78
+ {% assign themer_enabled = modules.themer_options.enabled %}
79
+ {% assign themer_reloadPageOnChange = modules.themer_options.reloadPageOnChange %}
80
+ {% assign themer_hideOnReload = modules.themer_options.hideOnReload %}
81
+ {% assign comment_provider = template_config.comments.provider %}
79
82
 
80
83
  {% comment %} Set variables
81
84
  -------------------------------------------------------------------------------- {% endcomment %}
@@ -98,6 +101,24 @@ regenerate: true
98
101
  {% assign production = true %}
99
102
  {% endif %}
100
103
 
104
+ {% comment %} language detection
105
+ -------------------------------------------------------------------------------- {% endcomment %}
106
+ {% if site.language == "en" %}
107
+ {% assign language = "en" %}
108
+ {% elsif site.language == "de"%}
109
+ {% assign language = "de" %}
110
+ {% else %}
111
+ {% assign language = "en" %}
112
+ {% endif %}
113
+
114
+ {% if language == "en" %}
115
+ {% assign comments_headline = template_config.comments.comments_headline.en %}
116
+ {% endif %}
117
+
118
+ {% if language == "de" %}
119
+ {% assign comments_headline = template_config.comments.comments_headline.de %}
120
+ {% endif %}
121
+
101
122
  /*
102
123
  # -----------------------------------------------------------------------------
103
124
  # ~/assets/themes/j1/adapter/js/j1_template.js
@@ -167,7 +188,7 @@ var j1 = (function () {
167
188
  var themeCss;
168
189
  var cssExtension = (environment === 'production')
169
190
  ? '.min.css'
170
- : '.css';
191
+ : '.css'
171
192
 
172
193
  // Pathes of J1 data files
173
194
  var colors_data_path = '{{template_config.colors_data_path}}';
@@ -212,9 +233,8 @@ var j1 = (function () {
212
233
  };
213
234
  var user_state = {
214
235
  'writer': 'j1.adapter',
215
- 'theme_css': '',
216
- 'theme_css': '',
217
236
  'theme_name': '',
237
+ 'theme_css': '',
218
238
  'theme_author': '',
219
239
  'theme_version': '{{template_version}}',
220
240
  'session_active': false,
@@ -260,6 +280,9 @@ var j1 = (function () {
260
280
  var date = new Date();
261
281
  var timestamp_now = date.toISOString();
262
282
  var curr_state = 'started';
283
+ var gaCookies = j1.findCookie('_ga');
284
+ var j1Cookies = j1.findCookie('j1');
285
+ var themerOptions = $.extend({}, {{themer_options | replace: '=>', ':' | replace: 'nil', '""' }});
263
286
 
264
287
  // -----------------------------------------------------------------------
265
288
  // options loader
@@ -300,26 +323,31 @@ var j1 = (function () {
300
323
  user_state.last_session_ts = timestamp_now;
301
324
 
302
325
  if (!user_consent.analyses || !user_consent.personalization) {
303
- // expire consent|state cookies to session
326
+ // rewrite consent|state cookies to session
327
+ logger.debug('\n' + 'write to cookie : ' + cookie_names.user_consent);
304
328
  cookie_written = j1.writeCookie({
305
329
  name: cookie_names.user_consent,
306
330
  data: user_consent,
307
331
  samesite: 'Strict',
308
- secure: secure
332
+ secure: secure,
333
+ expires: 0
309
334
  });
310
335
  if (!cookie_written) {
311
336
  logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_consent);
312
337
  }
338
+ logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
313
339
  cookie_written = j1.writeCookie({
314
340
  name: cookie_names.user_state,
315
341
  data: user_state,
316
342
  samesite: 'Strict',
317
- secure: secure
343
+ secure: secure,
344
+ expires: 0
318
345
  });
319
346
  if (!cookie_written) {
320
347
  logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_consent);
321
348
  }
322
349
  } else {
350
+ logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
323
351
  cookie_written = j1.writeCookie({
324
352
  name: cookie_names.user_state,
325
353
  data: user_state,
@@ -332,9 +360,8 @@ var j1 = (function () {
332
360
  }
333
361
  }
334
362
  } else {
335
- // jadams, 2021-07-11: on beforeunload, a vaild state cookie
336
- // is expected
337
- logger.fatal('\n' + 'missing cookie detected: ' + cookie_names.user_state);
363
+ // jadams, 2021-07-11: on beforeunload, a user state cookie is expected
364
+ logger.error('\n' + 'missing cookie detected: ' + cookie_names.user_state);
338
365
  }
339
366
  }); // END beforeunload
340
367
 
@@ -351,7 +378,8 @@ var j1 = (function () {
351
378
  name: cookie_names.user_session,
352
379
  data: user_session,
353
380
  samesite: 'Strict',
354
- secure: secure
381
+ secure: secure,
382
+ expires: 0
355
383
  });
356
384
  if (!cookie_written) {
357
385
  logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
@@ -376,22 +404,29 @@ var j1 = (function () {
376
404
  // for what reason.
377
405
  if (!user_state) {
378
406
  logger.error('\n' + 'cookie not found: ' + cookie_names.user_state);
407
+ logger.debug('\n' + 'j1 cookies found:' + j1Cookies.length);
408
+ j1Cookies.forEach(item => console.log('j1.core.switcher: ' + item));
409
+ logger.debug('\n' + 'ga cookies found:' + gaCookies.length);
410
+ gaCookies.forEach(item => console.log('j1.core.switcher: ' + item));
379
411
  user_state = j1.readCookie(cookie_names.user_state);
380
412
  user_state.session_active = true;
381
413
  }
382
414
 
383
415
  if (!user_consent.analyses || !user_consent.personalization) {
384
- // expire consent|state cookies to session
416
+ // rewrite consent|state cookies to session
417
+ logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
385
418
  cookie_written = j1.writeCookie({
386
419
  name: cookie_names.user_state,
387
420
  data: user_state,
388
421
  samesite: 'Strict',
389
- secure: secure
422
+ secure: secure,
423
+ expires: 0
390
424
  });
391
425
  if (!cookie_written) {
392
426
  logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_state);
393
427
  }
394
428
  } else {
429
+ logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
395
430
  cookie_written = j1.writeCookie({
396
431
  name: cookie_names.user_state,
397
432
  data: user_state,
@@ -428,11 +463,13 @@ var j1 = (function () {
428
463
 
429
464
  logger.info(logText);
430
465
  logger.info('\n' + 'update user session cookie');
466
+ logger.debug('\n' + 'write to cookie : ' + cookie_names.user_session);
431
467
  cookie_written = j1.writeCookie({
432
468
  name: cookie_names.user_session,
433
469
  data: user_session,
434
470
  samesite: 'Strict',
435
- secure: secure
471
+ secure: secure,
472
+ expires: 0
436
473
  });
437
474
 
438
475
  if (!cookie_written) {
@@ -475,11 +512,13 @@ var j1 = (function () {
475
512
  logText = '\n' + 'mode detected: ' + user_session.mode;
476
513
 
477
514
  logger.info(logText);
515
+ logger.debug('\n' + 'write to cookie : ' + cookie_names.user_session);
478
516
  cookie_written = j1.writeCookie({
479
517
  name: cookie_names.user_session,
480
518
  data: user_session,
481
519
  samesite: 'Strict',
482
- secure: secure
520
+ secure: secure,
521
+ expires: 0
483
522
  });
484
523
  if (!cookie_written) {
485
524
  logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
@@ -535,11 +574,13 @@ var j1 = (function () {
535
574
  }
536
575
 
537
576
  logger.info('\n' + 'update user session cookie');
577
+ logger.debug('\n' + 'write to cookie : ' + cookie_names.user_session);
538
578
  cookie_written = j1.writeCookie({
539
579
  name: cookie_names.user_session,
540
580
  data: user_session,
541
581
  samesite: 'Strict',
542
- secure: secure
582
+ secure: secure,
583
+ expires: 0
543
584
  });
544
585
 
545
586
  if (!cookie_written) {
@@ -557,11 +598,13 @@ var j1 = (function () {
557
598
  // logger.info(logText);
558
599
 
559
600
  user_session.timestamp = timestamp_now;
601
+ logger.debug('\n' + 'write to cookie : ' + cookie_names.user_session);
560
602
  cookie_written = j1.writeCookie({
561
603
  name: cookie_names.user_session,
562
604
  data: user_session,
563
605
  samesite: 'Strict',
564
- secure: secure
606
+ secure: secure,
607
+ expires: 0
565
608
  });
566
609
  if (!cookie_written) {
567
610
  logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
@@ -906,11 +949,13 @@ var j1 = (function () {
906
949
  user_session = j1.mergeData(user_session, data);
907
950
 
908
951
  user_session.current_page = current_url.pathname;
952
+ logger.debug('\n' + 'write to cookie : ' + cookie_names.user_session);
909
953
  cookie_written = j1.writeCookie({
910
954
  name: cookie_names.user_session,
911
955
  data: user_session,
912
956
  samesite: 'Strict',
913
- secure: secure
957
+ secure: secure,
958
+ expires: 0
914
959
  });
915
960
  if (!cookie_written) {
916
961
  logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
@@ -956,7 +1001,7 @@ var j1 = (function () {
956
1001
  } else {
957
1002
  if (comments) {
958
1003
  logger.warn('\n' + 'enable comment provider: ' + comment_provider);
959
- $('#main-content').append('<h2 id="leave-a-comment" class="mt-4">Leave a comment</h2>');
1004
+ $('#main-content').append('<h2 id="leave-a-comment" class="mt-4">{{comments_headline}}</h2>');
960
1005
  if (comment_provider === 'disqus') {
961
1006
  logger.info('\n' + 'load comment provider code: ' + comment_provider);
962
1007
  $('#main-content').append('<div id="disqus_thread"></div>');
@@ -977,6 +1022,16 @@ var j1 = (function () {
977
1022
  // display page
978
1023
  $('#no_flicker').css('display', 'block');
979
1024
 
1025
+ // add recommended title to hyvor iframe for SEO optimization (if loadad)
1026
+ if (comment_provider === 'hyvor') {
1027
+ var dependencies_met_load_finished = setInterval (function () {
1028
+ if ($('#hyvor-talk-view').children().length) {
1029
+ $('#hyvor-talk-iframe').prop('title', 'Hyvor talk iframe');
1030
+ clearInterval(dependencies_met_load_finished);
1031
+ }
1032
+ }, 25);
1033
+ }
1034
+
980
1035
  // NOTE: Placed tracking warning/info here because page may reloaded
981
1036
  // after cookie consent selection
982
1037
  if (user_consent.analyses) {
@@ -1081,7 +1136,7 @@ var j1 = (function () {
1081
1136
  } else {
1082
1137
  if (comments) {
1083
1138
  logger.warn('\n' + 'enable comment provider: ' + comment_provider);
1084
- $('#main-content').append('<h2 id="leave-a-comment" class="mt-4">Leave a comment</h2>');
1139
+ $('#main-content').append('<h2 id="leave-a-comment" class="mt-4">{{comments_headline}}</h2>');
1085
1140
  if (comment_provider === 'disqus') {
1086
1141
  logger.info('\n' + 'load comment provider code: ' + comment_provider);
1087
1142
  $('#main-content').append('<div id="disqus_thread"></div>');
@@ -1102,6 +1157,16 @@ var j1 = (function () {
1102
1157
  // display page
1103
1158
  $('#no_flicker').css('display', 'block');
1104
1159
 
1160
+ // add recommended title to hyvor iframe for SEO optimization (if loadad)
1161
+ if (comment_provider === 'hyvor') {
1162
+ var dependencies_met_load_finished = setInterval (function () {
1163
+ if ($('#hyvor-talk-view').children().length) {
1164
+ $('#hyvor-talk-iframe').prop('title', 'Hyvor talk iframe');
1165
+ clearInterval(dependencies_met_load_finished);
1166
+ }
1167
+ }, 25);
1168
+ }
1169
+
1105
1170
  // NOTE: Placed tracking warning/info here because page may reloaded
1106
1171
  // after cookie consent selection
1107
1172
  if (user_consent.analyses) {
@@ -1122,11 +1187,13 @@ var j1 = (function () {
1122
1187
  $('#quickLinksSignInOutButton').css('display', 'none');
1123
1188
 
1124
1189
  user_session.current_page = current_url.pathname;
1190
+ logger.debug('\n' + 'write to cookie : ' + cookie_names.user_session);
1125
1191
  cookie_written = j1.writeCookie({
1126
1192
  name: cookie_names.user_session,
1127
1193
  data: user_session,
1128
1194
  samesite: 'Strict',
1129
- secure: secure
1195
+ secure: secure,
1196
+ expires: 0
1130
1197
  });
1131
1198
  if (!cookie_written) {
1132
1199
  logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
@@ -1501,6 +1568,14 @@ var j1 = (function () {
1501
1568
  // https://developer.mozilla.org/de/docs/Web/HTTP/Headers/Set-Cookie/SameSite
1502
1569
  // https://www.smarketer.de/blog/chrome-update-80-cookies/
1503
1570
  // -------------------------------------------------------------------------
1571
+ // SESSION Cookies:
1572
+ // NOT putting an EXPIRES part in will create a session cookie.
1573
+ // -------------------------------------------------------------------------
1574
+ // REMOVING Cookies: Cookies get removed immediately, if the expires
1575
+ // part points to a PAST date (e.g. 01 Jan 1970 00:00:00 UTC).
1576
+ // -------------------------------------------------------------------------
1577
+ // MAX-AGE Cookies: To leave cookies for a specific time, set the expires
1578
+ // part into a FUTUTE date. FOR GDPR compliance, MAX-AGE is 365 days.
1504
1579
  // TODO:
1505
1580
  // Change attribute "Secure" to true, if HTTPS is used.
1506
1581
  // Checks and config changes are to be done.
@@ -1517,25 +1592,27 @@ var j1 = (function () {
1517
1592
  // must now also specify the Secure attribute (they require a secure
1518
1593
  // context/HTTPS).
1519
1594
  // -------------------------------------------------------------------------
1520
- writeCookie: function (options /*name, data, [path, expires, samesite, http_only, secure]*/) {
1595
+ writeCookie: function (options /*name, data, [path, expires, domain, samesite, http_only, secure]*/) {
1596
+ var date = new Date();
1597
+ var timestamp_now = date.toISOString();
1598
+ var cookie_data = {};
1599
+ var data_json;
1600
+ var data_encoded;
1601
+ var expires;
1602
+ var stringifiedAttributes = '';
1603
+
1521
1604
  var defaults = {
1522
1605
  data: {},
1523
1606
  name: '',
1524
1607
  path: '/',
1525
1608
  expires: 0,
1609
+ domain: 'localhost',
1526
1610
  samesite: 'Strict',
1527
1611
  http_only: false,
1528
1612
  secure: false
1529
1613
  };
1530
- var settings = $.extend(defaults, options);
1531
1614
 
1532
- var date = new Date();
1533
- var timestamp_now = date.toISOString();
1534
- var cookie_data = {};
1535
- var data_json;
1536
- var data_encoded;
1537
- var expires;
1538
- var stringifiedAttributes = '';
1615
+ var settings = $.extend(defaults, options);
1539
1616
 
1540
1617
  cookie_data.timestamp = timestamp_now;
1541
1618
 
@@ -1550,26 +1627,21 @@ var j1 = (function () {
1550
1627
  data_encoded = window.btoa(data_json);
1551
1628
  }
1552
1629
 
1553
- // if (settings.path !== '/') {
1554
- stringifiedAttributes += '; ' + 'path=' + settings.path;
1555
- // }
1630
+ stringifiedAttributes += '; ' + 'path=' + settings.path;
1556
1631
 
1557
1632
  if (settings.expires > 0) {
1558
- settings.expires = new Date(new Date() * 1 + settings.expires * 864e+5);
1559
- stringifiedAttributes += '; ' + 'expires=' + settings.expires;
1633
+ date.setTime(date.getTime() + (settings.expires * 24 * 60 * 60 * 1000));
1634
+ stringifiedAttributes += '; ' + 'expires=' + date.toUTCString();
1560
1635
  }
1561
1636
 
1562
- // if (settings.samesite !== 'Strict') {
1563
- stringifiedAttributes += '; ' + 'SameSite=' + settings.samesite;
1564
- // }
1637
+ stringifiedAttributes += '; ' + 'SameSite=' + settings.samesite;
1565
1638
 
1566
- // stringify cookie attributes
1567
1639
  if (settings.secure) {
1568
1640
  stringifiedAttributes += '; ' + 'secure=' + settings.secure;
1569
- // document.cookie = settings.name + '=' + content +'; path=' + settings.path + '; ' + 'SameSite=' + settings.samesite + '; secure';
1570
1641
  }
1571
1642
 
1572
1643
  // write the cookie
1644
+ // document.cookie = settings.name + '=' + content + '; path=' + settings.path + '; domain=' + settings.domain + '; ' + 'SameSite=' + settings.samesite + '; secure';
1573
1645
  document.cookie = settings.name + '=' + data_encoded + stringifiedAttributes;
1574
1646
 
1575
1647
  if (j1.existsCookie(settings.name)) {