j1-template 2022.0.10 → 2022.0.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (148) hide show
  1. checksums.yaml +4 -4
  2. data/assets/themes/j1/adapter/js/advertising.js +66 -48
  3. data/assets/themes/j1/adapter/js/algolia.js +10 -13
  4. data/assets/themes/j1/adapter/js/analytics.js +259 -0
  5. data/assets/themes/j1/adapter/js/asciidoctor.js +10 -13
  6. data/assets/themes/j1/adapter/js/attic.js +10 -5
  7. data/assets/themes/j1/adapter/js/bmd.js +10 -14
  8. data/assets/themes/j1/adapter/js/carousel.js +10 -13
  9. data/assets/themes/j1/adapter/js/clipboard.js +9 -10
  10. data/assets/themes/j1/adapter/js/comments.js +407 -0
  11. data/assets/themes/j1/adapter/js/cookieConsent.js +106 -87
  12. data/assets/themes/j1/adapter/js/fab.js +11 -11
  13. data/assets/themes/j1/adapter/js/framer.js +60 -62
  14. data/assets/themes/j1/adapter/js/j1.js +225 -268
  15. data/assets/themes/j1/adapter/js/justifiedGallery.js +12 -14
  16. data/assets/themes/j1/adapter/js/justifiedGalleryCustomizer.js +10 -13
  17. data/assets/themes/j1/adapter/js/lightbox.js +12 -9
  18. data/assets/themes/j1/adapter/js/logger.js +11 -5
  19. data/assets/themes/j1/adapter/js/mmenu.js +11 -12
  20. data/assets/themes/j1/adapter/js/navigator.js +13 -12
  21. data/assets/themes/j1/adapter/js/quicksearch.js +10 -13
  22. data/assets/themes/j1/adapter/js/rouge.js +10 -13
  23. data/assets/themes/j1/adapter/js/rtable.js +10 -13
  24. data/assets/themes/j1/adapter/js/rtextResizer.js +10 -13
  25. data/assets/themes/j1/adapter/js/scroller.js +13 -11
  26. data/assets/themes/j1/adapter/js/themer.js +12 -3
  27. data/assets/themes/j1/adapter/js/toccer.js +10 -13
  28. data/assets/themes/j1/adapter/js/translator.js +35 -81
  29. data/assets/themes/j1/core/js/template.js +13 -5
  30. data/assets/themes/j1/core/js/template.min.js +1 -1
  31. data/assets/themes/j1/core/js/template.min.js.map +1 -1
  32. data/assets/themes/j1/modules/advertising/js/google/adInitializer.js +14 -4
  33. data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.js +11 -2
  34. data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.min.js +1 -1
  35. data/lib/j1/version.rb +1 -1
  36. data/lib/starter_web/Gemfile +1 -1
  37. data/lib/starter_web/_config.yml +1 -9
  38. data/lib/starter_web/_data/apps/carousel.yml +2 -2
  39. data/lib/starter_web/_data/apps/defaults/carousel.yml +3 -2
  40. data/lib/starter_web/_data/apps/defaults/justifiedGallery.yml +2 -2
  41. data/lib/starter_web/_data/apps/defaults/justifiedGalleryCustomizer.yml +2 -2
  42. data/lib/starter_web/_data/apps/defaults/lightGallery.yml +2 -2
  43. data/lib/starter_web/_data/apps/defaults/lightbox.yml +2 -2
  44. data/lib/starter_web/_data/apps/justifiedGallery.yml +2 -2
  45. data/lib/starter_web/_data/apps/justifiedGalleryCustomizer.yml +2 -2
  46. data/lib/starter_web/_data/apps/lightGallery.yml +2 -2
  47. data/lib/starter_web/_data/apps/lightbox.yml +2 -2
  48. data/lib/starter_web/_data/blocks/banner.yml +3 -2
  49. data/lib/starter_web/_data/blocks/defaults/banner.yml +9 -0
  50. data/lib/starter_web/_data/blocks/defaults/footer.yml +9 -0
  51. data/lib/starter_web/_data/blocks/defaults/panel.yml +9 -0
  52. data/lib/starter_web/_data/blocks/footer.yml +3 -2
  53. data/lib/starter_web/_data/blocks/panel.yml +3 -2
  54. data/lib/starter_web/_data/builder/blog_navigator.yml +3 -2
  55. data/lib/starter_web/_data/builder/defaults/blog_navigator.yml +8 -8
  56. data/lib/starter_web/_data/j1_config.yml +0 -116
  57. data/lib/starter_web/_data/layouts/default.yml +14 -14
  58. data/lib/starter_web/_data/layouts/home.ads.yml +262 -0
  59. data/lib/starter_web/_data/layouts/home.no-ads.yml +262 -0
  60. data/lib/starter_web/_data/layouts/home.yml +1 -1
  61. data/lib/starter_web/_data/layouts/page.yml +7 -18
  62. data/lib/starter_web/_data/layouts/post.yml +0 -11
  63. data/lib/starter_web/_data/modules/advertising.yml +4 -14
  64. data/lib/starter_web/_data/modules/analytics.yml +99 -0
  65. data/lib/starter_web/_data/modules/attics.yml +3 -2
  66. data/lib/starter_web/_data/modules/comments.yml +55 -0
  67. data/lib/starter_web/_data/modules/cookieconsent.yml +2 -1
  68. data/lib/starter_web/_data/modules/cookies.yml +6 -1
  69. data/lib/starter_web/_data/modules/defaults/advertising.yml +9 -9
  70. data/lib/starter_web/_data/modules/defaults/analytics.yml +93 -0
  71. data/lib/starter_web/_data/modules/defaults/attics.yml +3 -2
  72. data/lib/starter_web/_data/modules/defaults/authentication.yml +51 -48
  73. data/lib/starter_web/_data/modules/defaults/comments.yml +114 -0
  74. data/lib/starter_web/_data/modules/defaults/cookieconsent.yml +3 -3
  75. data/lib/starter_web/_data/modules/defaults/cookies.yml +107 -26
  76. data/lib/starter_web/_data/modules/defaults/fab.yml +4 -2
  77. data/lib/starter_web/_data/modules/defaults/framer.yml +2 -3
  78. data/lib/starter_web/_data/modules/defaults/log4javascript.yml +3 -2
  79. data/lib/starter_web/_data/modules/defaults/log4r.yml +2 -2
  80. data/lib/starter_web/_data/modules/defaults/navigator.yml +4 -2
  81. data/lib/starter_web/_data/modules/defaults/quicksearch.yml +4 -3
  82. data/lib/starter_web/_data/modules/defaults/rtable.yml +3 -2
  83. data/lib/starter_web/_data/modules/defaults/scoller.yml +3 -2
  84. data/lib/starter_web/_data/modules/defaults/themer.yml +119 -118
  85. data/lib/starter_web/_data/modules/defaults/toccer.yml +1 -1
  86. data/lib/starter_web/_data/modules/defaults/translator.yml +1 -1
  87. data/lib/starter_web/_data/modules/fab.yml +3 -2
  88. data/lib/starter_web/_data/modules/framer.yml +3 -4
  89. data/lib/starter_web/_data/modules/log4r.yml +2 -2
  90. data/lib/starter_web/_data/modules/navigator.yml +4 -2
  91. data/lib/starter_web/_data/modules/quicksearch.yml +3 -3
  92. data/lib/starter_web/_data/modules/rtable.yml +3 -3
  93. data/lib/starter_web/_data/modules/scroller.yml +2 -3
  94. data/lib/starter_web/_data/modules/themer.yml +2 -3
  95. data/lib/starter_web/_data/modules/toccer.yml +3 -3
  96. data/lib/starter_web/_data/modules/translator.yml +1 -1
  97. data/lib/starter_web/_data/plugins/defaults/paginator.yml +2 -2
  98. data/lib/starter_web/_data/plugins/paginator.yml +2 -2
  99. data/lib/starter_web/_data/resources.yml +442 -309
  100. data/lib/starter_web/_includes/attributes.asciidoc +1 -1
  101. data/lib/starter_web/_plugins/lunr_index.rb +1 -1
  102. data/lib/starter_web/collections/posts/public/featured/_posts/0000-00-00-welcome-to-j1.adoc.erb +1 -1
  103. data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.adoc +1 -1
  104. data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.ads.asciidoc +196 -0
  105. data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.comments.asciidoc +182 -0
  106. data/lib/starter_web/collections/posts/public/featured/_posts/2021-02-01-site-generators.adoc +1 -1
  107. data/lib/starter_web/collections/posts/public/featured/_posts/2021-03-03-about-j1.adoc +1 -1
  108. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-01-post-wiki-series.adoc +1 -1
  109. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-02-post-wiki-series.adoc +1 -1
  110. data/lib/starter_web/collections/posts/public/series/_posts/2020-01-03-post-wiki-series.adoc +1 -1
  111. data/lib/starter_web/index.html +0 -3
  112. data/lib/starter_web/package.json +1 -1
  113. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/000_intro.adoc +1 -1
  114. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/100_converter.adoc +1 -1
  115. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/200_themes.adoc +1 -1
  116. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +1 -4
  117. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +1 -4
  118. data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +1 -4
  119. data/lib/starter_web/pages/public/learn/roundtrip/{100_present_images.no_ads.asciidoc → 100_present_images.base.asciidoc} +0 -0
  120. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.comments.asciidoc +237 -0
  121. data/lib/starter_web/pages/public/manuals/dropdown-help.adoc +23 -2
  122. data/lib/starter_web/pages/public/previewer/preview_bootstrap_theme.adoc +100 -166
  123. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  124. data/lib/starter_web/utilsrv/package.json +1 -1
  125. metadata +14 -26
  126. data/_includes/themes/j1/blocks/ads/ad.html +0 -64
  127. data/_includes/themes/j1/modules/boards/news_pin_board.html +0 -183
  128. data/_includes/themes/j1/modules/connectors/analytic/custom-provider.html +0 -32
  129. data/_includes/themes/j1/modules/connectors/analytic/google-analytics.html +0 -30
  130. data/_includes/themes/j1/modules/connectors/analytics +0 -60
  131. data/_includes/themes/j1/modules/connectors/comment/commento.html +0 -31
  132. data/_includes/themes/j1/modules/connectors/comment/custom-provider.html +0 -30
  133. data/_includes/themes/j1/modules/connectors/comment/disqus.html +0 -32
  134. data/_includes/themes/j1/modules/connectors/comment/facebook.html +0 -30
  135. data/_includes/themes/j1/modules/connectors/comment/hyvor.html +0 -32
  136. data/_includes/themes/j1/modules/connectors/comment/just-comments.html +0 -31
  137. data/_includes/themes/j1/modules/connectors/comments +0 -64
  138. data/_includes/themes/j1/modules/connectors/sharing +0 -29
  139. data/_includes/themes/j1/modules/connectors/survey/custom-provider.html +0 -30
  140. data/_includes/themes/j1/modules/connectors/survey/jotform.html +0 -32
  141. data/_includes/themes/j1/modules/connectors/surveys +0 -58
  142. data/_includes/themes/j1/modules/connectors/translator +0 -58
  143. data/_includes/themes/j1/modules/connectors/translators/custom-translator.html +0 -32
  144. data/_includes/themes/j1/modules/connectors/translators/google-translator.html +0 -53
  145. data/_includes/themes/j1/modules/search/algolia.html +0 -181
  146. data/_includes/themes/j1/modules/search/docsearch.html +0 -42
  147. data/assets/data/disqus.js +0 -81
  148. data/assets/data/hyvor.js +0 -72
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fc2a02f0992942be9547df18b61632391829e533c645ea81fe4131eae7f49043
4
- data.tar.gz: d5e934d860c004b360d99ca7596cefcb45b3a0d76f68642310738d790260ce6b
3
+ metadata.gz: 8b82f66a38e834f8d58482cd5b873f110de6474e2e0af3a644721b9b55cbbbaf
4
+ data.tar.gz: 9a611fe54f09585e29a1a355b4ff630d391cc627b86c5e15498244f276e152b4
5
5
  SHA512:
6
- metadata.gz: 023b1c837af69c38b606fd4b47725b70a439a6a92e2513cca0bac881a5b4dc923d4f858ee4eec3bd54c4acbc203aae09ce728dee194ee506ce35009df3efc6d5
7
- data.tar.gz: af03effec7b450c998b5131863b0d61bc1fc9ddbec2d855bede05d857d7a1fa50dbc6e61a16d7a7028562a515f0d0feddbf94de9efd75c82dd8b89403f0e0def
6
+ metadata.gz: 2fcefcb4ef9cf86a75550e6155e6ad2607e5b11d8ac693bcd338a932c2ae964b15444b4c19b3803a6d0cc2d1676b979557c834678f7b44f71054ebfd80d57d43
7
+ data.tar.gz: 0bfed9014849a89820b08932378689492530212dcae7588530389f8bcd1f2af1bb75f2a56e6b3f89d730137e9edd218d43698743f64ae2295e2264e43cd61ae9
@@ -84,14 +84,13 @@ regenerate: true
84
84
  /* eslint indent: "off" */
85
85
  // -----------------------------------------------------------------------------
86
86
  'use strict';
87
-
88
- {% comment %} Main
89
- -------------------------------------------------------------------------------- {% endcomment %}
90
- j1.adapter['advertising'] = (function (j1, window) {
87
+ j1.adapter.advertising = (function (j1, window) {
91
88
 
92
89
  {% comment %} Set global variables
93
90
  -------------------------------------------------------------------------------- {% endcomment %}
94
91
  var environment = '{{environment}}';
92
+ var date = new Date();
93
+ var timestamp_now = date.toISOString();
95
94
  var gadScript = document.createElement('script');
96
95
  var adInitializerScript = document.createElement('script');
97
96
  var autoHideOnUnfilled = {{advertising_options.google.autoHideOnUnfilled}};
@@ -105,10 +104,9 @@ var baseUrl;
105
104
  var hostname;
106
105
  var cookie_names;
107
106
  var user_consent;
108
- var domain;
109
- var domainAttribute;
110
- var cookie_option_domain;
111
- var cookie_domain;
107
+ var advertisingProvider;
108
+ var providerID;
109
+ var validProviderID;
112
110
  var _this;
113
111
  var logger;
114
112
  var logText;
@@ -128,38 +126,47 @@ var logText;
128
126
  // [INFO ] [j1.adapter.advertising ] [ detected advertising provider (j1_config): {{advertising_provider}}} ]
129
127
  // [INFO ] [j1.adapter.advertising ] [ start processing load region head, layout: {{page.layout}} ]
130
128
 
129
+ // -----------------------------------------------------------------------
130
+ // Default module settings
131
+ // -----------------------------------------------------------------------
132
+ var settings = $.extend({
133
+ module_name: 'j1.adapter.advertising',
134
+ generated: '{{site.time}}'
135
+ }, options);
136
+
137
+ // -----------------------------------------------------------------------
138
+ // Global variable settings
139
+ // -----------------------------------------------------------------------
131
140
  cookie_names = j1.getCookieNames();
132
141
  user_consent = j1.readCookie(cookie_names.user_consent);
133
142
  url = new liteURL(window.location.href);
134
- baseUrl = url.origin;
135
143
  hostname = url.hostname;
136
- domain = hostname.substring(hostname.lastIndexOf('.', hostname.lastIndexOf('.') - 1) + 1);
137
- cookie_option_domain = '{{cookie_options.domain}}';
138
-
139
- // set domain used by cookies
140
- if (cookie_option_domain == 'auto') {
141
- domainAttribute = domain ;
142
- } else {
143
- domainAttribute = hostname;
144
- }
145
144
 
146
145
  {% case advertising_provider %}
147
146
  {% when "google" %}
148
147
  // [INFO ] [j1.adapter.advertising ] [ place provider: Google Adsense ]
148
+
149
149
  _this = j1.adapter.advertising;
150
150
  logger = log4javascript.getLogger('j1.adapter.advertising.google');
151
+
151
152
  // initialize state flag
152
153
  _this.setState('started');
153
154
  logger.info('\n' + 'state: ' + _this.getState());
154
155
  logger.info('\n' + 'module is being initialized');
155
- // default module settings
156
- var settings = $.extend({
157
- module_name: 'j1.adapter.advertising',
158
- generated: '2021-12-18 18:55:38 +0000'
159
- }, options);
160
156
 
161
157
  var dependencies_met_page_ready = setInterval(function() {
162
158
  if (j1.getState() == 'finished') {
159
+
160
+ providerID = '{{advertising_options.google.publisherID}}';
161
+ advertisingProvider = 'Google Adsense';
162
+ validProviderID = (providerID.includes('your')) ? false : true;
163
+ if (!validProviderID) {
164
+ logger.warn('\n' + 'invalid publisherID detected for Google Adsense (GAS): ' + providerID);
165
+ logger.info('\n' + 'skip initialization for provider: ' + advertisingProvider);
166
+ clearInterval(dependencies_met_page_ready);
167
+ return false;
168
+ }
169
+
163
170
  if (user_consent.personalization) {
164
171
  // place all ads configured for the page
165
172
  // NOTE: currently NOT implemented/used
@@ -168,22 +175,22 @@ var logText;
168
175
 
169
176
  // add gad api dynamically in the head section
170
177
  // -----------------------------------------------------------------
171
- logger.info('\n' + 'add gad api dynamically in section: head');
178
+ logger.info('\n' + 'add gas api in section: head');
172
179
  gadScript.async = true;
173
- gadScript.id = 'gad-api';
180
+ gadScript.id = 'gas-api';
174
181
  gadScript.src = '//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';
175
182
  gadScript.setAttribute('data-ad-client', 'ca-pub-3885670015316130');
176
183
  document.head.appendChild(gadScript);
177
184
 
178
185
  // setup monitor for state changes on all ads configured
179
186
  // ---------------------------------------------------------------
180
- logger.info('\n' + 'setup monitoring');
187
+ logger.debug('\n' + 'setup monitoring');
181
188
  _this.monitor_ads();
182
189
 
183
190
  // run protection check
184
191
  // -------------------------------------------------------------------
185
192
  if (checkTrackingProtection) {
186
- logger.info('\n' + 'run checks for tracking protection');
193
+ logger.debug('\n' + 'run checks for tracking protection');
187
194
  _this.check_tracking_protection();
188
195
 
189
196
  var dependencies_met_tracking_check_ready = setInterval (function (options) {
@@ -220,22 +227,26 @@ var logText;
220
227
  }
221
228
  clearInterval(dependencies_met_page_ready);
222
229
  } else {
223
- var gaCookies = j1.findCookie('_ga');
230
+ // manage GAD cookies if no consent is given|rejected
231
+ // -----------------------------------------------------------------
232
+ var gasCookies = j1.findCookie('__ga');
224
233
  logger.warn('\n' + 'consent on cookies disabled for personalization');
225
234
  logger.warn('\n' + 'initialization of module advertising skipped');
226
235
 
227
- // jadams, 2021-12-19: remove cookies on invalid GAD config
228
- // or left cookies from previous session
229
- // -----------------------------------------------------------------
230
- j1.removeCookie({ name: '__gads' });
231
-
232
- // jadams, 2021-12-19: delete cookies in loop doesn't work
233
- // gaCookies.forEach(function (item) {
234
- // logger.warn('\n' + 'delete GAD cookie: ' + item);
235
- // // j1.removeCookie({ name: item, domain: domainAttribute });
236
- // // j1.removeCookie({ name: item });
237
- // });
236
+ // remove cookies on invalid GAS config or left from a previous
237
+ // session/page view if they exists
238
+ // ---------------------------------------------------------------------
239
+ gasCookies.forEach(function (item) {
240
+ // Remove cookies from Google Ads
241
+ if (hostname == 'localhost') {
242
+ j1.removeCookie({ name: item, domain: false, secure: false });
243
+ } else {
244
+ j1.removeCookie({ name: item, domain: '.' + hostname, secure: false });
245
+ }
246
+ });
238
247
 
248
+ // manage tracking protection
249
+ // -----------------------------------------------------------------
239
250
  if (checkTrackingProtection) {
240
251
  if (!user_consent.personalization) {
241
252
  logText = '\n' + 'consent on cookies disabled for personalization';
@@ -273,21 +284,28 @@ var logText;
273
284
 
274
285
  // -------------------------------------------------------------------------
275
286
  // monitor_ads()
276
- // monitor for state changes on the ad
287
+ // monitor for state changes on the ad placed in pages (if any)
288
+ //
289
+ // NOTE: Check visibility state of the adSlot to prevent multiple
290
+ // processing of the same slot
277
291
  // -------------------------------------------------------------------------
278
292
  monitor_ads: function () {
293
+ var logger = log4javascript.getLogger('j1.adapter.advertising.monitor.ads');
279
294
 
280
295
  $('.adsbygoogle').attrchange({
281
296
  trackValues: true,
282
297
  callback: function (event) {
283
298
  if (event.newValue === 'unfilled') {
284
- var elm = event.target.dataset;
285
- if (addBorderOnUnfilled) { $('.adsbygoogle').addClass('border--dotted'); }
286
- if (elm.adClient) {
287
- logger.warn('\n' + 'found ad state ' + event.newValue + ' for slot: ' + elm.adSlot);
288
- if (autoHideOnUnfilled) {
289
- logger.warn('\n' + ' hide ad for slot: ' + elm.adSlot);
290
- $('#' + elm.adSlot ).hide();
299
+ var elm = event.target.dataset;
300
+ var adSlotIsVisible = $('#' + elm.adSlot ).is(":visible");
301
+ if (adSlotIsVisible) {
302
+ if (addBorderOnUnfilled) { $('.adsbygoogle').addClass('border--dotted'); }
303
+ if (elm.adClient) {
304
+ logger.warn('\n' + 'found ad state ' + event.newValue + ' for slot: ' + elm.adSlot);
305
+ if (autoHideOnUnfilled) {
306
+ logger.warn('\n' + ' hide ad for slot: ' + elm.adSlot);
307
+ $('#' + elm.adSlot ).hide();
308
+ }
291
309
  }
292
310
  }
293
311
  }
@@ -308,7 +326,7 @@ var logText;
308
326
  // https://stackoverflow.com/questions/33959324/how-to-detect-if-a-user-is-using-tracking-protection-in-firefox-42
309
327
  // -------------------------------------------------------------------------
310
328
  check_tracking_protection: function () {
311
- var logger = log4javascript.getLogger('j1.adapter.advertising.tracking.monitor');
329
+ var logger = log4javascript.getLogger('j1.adapter.advertising.monitor.tracking');
312
330
 
313
331
  logText = '\n' + 'check for trackingprotection';
314
332
  logger.info(logText);
@@ -74,10 +74,7 @@ regenerate: false
74
74
  /* eslint indent: "off" */
75
75
  // -----------------------------------------------------------------------------
76
76
  'use strict';
77
-
78
- {% comment %} Main
79
- -------------------------------------------------------------------------------- {% endcomment %}
80
- j1.adapter['algolia'] = (function (j1, window) {
77
+ j1.adapter.algolia = (function (j1, window) {
81
78
 
82
79
  {% comment %} Set global variables
83
80
  ------------------------------------------------------------------------------ {% endcomment %}
@@ -101,15 +98,6 @@ j1.adapter['algolia'] = (function (j1, window) {
101
98
  // -------------------------------------------------------------------------
102
99
  init: function (options) {
103
100
 
104
- // -----------------------------------------------------------------------
105
- // globals
106
- // -----------------------------------------------------------------------
107
- _this = j1.adapter.algolia;
108
- logger = log4javascript.getLogger('j1.adapter.algolia');
109
-
110
- // initialize state flag
111
- _this.state = 'pending';
112
-
113
101
  // -----------------------------------------------------------------------
114
102
  // Default module settings
115
103
  // -----------------------------------------------------------------------
@@ -118,6 +106,15 @@ j1.adapter['algolia'] = (function (j1, window) {
118
106
  generated: '{{site.time}}'
119
107
  }, options);
120
108
 
109
+ // -----------------------------------------------------------------------
110
+ // Global variable settings
111
+ // -----------------------------------------------------------------------
112
+ _this = j1.adapter.algolia;
113
+ logger = log4javascript.getLogger('j1.adapter.algolia');
114
+
115
+ // initialize state flag
116
+ _this.state = 'pending';
117
+
121
118
  _this.setState('started');
122
119
  logger.info('\n' + 'state: ' + _this.getState());
123
120
  logger.info('\n' + 'module is being initialized');
@@ -0,0 +1,259 @@
1
+ ---
2
+ regenerate: true
3
+ ---
4
+
5
+ {% capture cache %}
6
+
7
+ {% comment %}
8
+ # -----------------------------------------------------------------------------
9
+ # ~/assets/themes/j1/adapter/js/analytics.js
10
+ # Liquid template to adapt the Analytics module
11
+ #
12
+ # Product/Info:
13
+ # https://jekyll.one
14
+ # Copyright (C) 2021 Juergen Adams
15
+ #
16
+ # J1 Template is licensed under the MIT License.
17
+ # For details, see https://jekyll.one
18
+ # -----------------------------------------------------------------------------
19
+ # Test data:
20
+ # {{ liquid_var | debug }}
21
+ # analytics_options: {{ analytics_options | debug }}
22
+ # -----------------------------------------------------------------------------
23
+ {% endcomment %}
24
+
25
+ {% comment %} Liquid procedures
26
+ -------------------------------------------------------------------------------- {% endcomment %}
27
+
28
+ {% comment %} Set global settings
29
+ -------------------------------------------------------------------------------- {% endcomment %}
30
+ {% assign environment = site.environment %}
31
+ {% assign asset_path = "/assets/themes/j1" %}
32
+
33
+ {% comment %} Process YML config data
34
+ ================================================================================ {% endcomment %}
35
+
36
+ {% comment %} Set config files
37
+ -------------------------------------------------------------------------------- {% endcomment %}
38
+ {% assign template_config = site.data.j1_config %}
39
+ {% assign blocks = site.data.blocks %}
40
+ {% assign modules = site.data.modules %}
41
+
42
+ {% comment %} Set config data (settings only)
43
+ -------------------------------------------------------------------------------- {% endcomment %}
44
+ {% assign analytics_defaults = modules.defaults.analytics.defaults %}
45
+ {% assign analytics_settings = modules.analytics.settings %}
46
+
47
+ {% comment %} Set config options (settings only)
48
+ -------------------------------------------------------------------------------- {% endcomment %}
49
+ {% assign analytics_options = analytics_defaults | merge: analytics_settings %}
50
+
51
+ {% comment %} Variables
52
+ -------------------------------------------------------------------------------- {% endcomment %}
53
+ {% assign analytics = analytics_options.enabled %}
54
+ {% assign analytics_provider = analytics_options.provider %}
55
+
56
+ {% assign production = false %}
57
+ {% if environment == 'prod' or environment == 'production' %}
58
+ {% assign production = true %}
59
+ {% endif %}
60
+
61
+ /*
62
+ # -----------------------------------------------------------------------------
63
+ # ~/assets/themes/j1/adapter/js/analytics.js
64
+ # J1 Adapter for the analytics module
65
+ #
66
+ # Product/Info:
67
+ # https://jekyll.one
68
+ #
69
+ # Copyright (C) 2021 Juergen Adams
70
+ #
71
+ # J1 Template is licensed under the MIT License.
72
+ # For details, see https://jekyll.one
73
+ # -----------------------------------------------------------------------------
74
+ # Adapter generated: {{site.time}}
75
+ # -----------------------------------------------------------------------------
76
+ */
77
+
78
+ // -----------------------------------------------------------------------------
79
+ // ESLint shimming
80
+ // -----------------------------------------------------------------------------
81
+ /* eslint indent: "off" */
82
+ // -----------------------------------------------------------------------------
83
+ 'use strict';
84
+ j1.adapter.analytics = (function (j1, window) {
85
+
86
+ {% comment %} Set global variables
87
+ -------------------------------------------------------------------------------- {% endcomment %}
88
+ var url = new liteURL(window.location.href);
89
+ var hostname = url.hostname;
90
+ var environment = '{{environment}}';
91
+ var gaScript = document.createElement('script');
92
+ var providerID = '{{analytics_options.google.trackingID}}';
93
+ var validProviderID = (providerID.includes('your')) ? false : true;
94
+ var optInOut = {{analytics_options.google.optInOut}};
95
+ var anonymizeIP = {{analytics_options.google.anonymizeIP}};
96
+ var cookie_names = j1.getCookieNames();
97
+ var date = new Date();
98
+ var timestamp_now = date.toISOString();
99
+ var gaCookies;
100
+ var user_consent;
101
+ var gaExists;
102
+ var _this;
103
+ var logger;
104
+ var logText;
105
+
106
+ // ---------------------------------------------------------------------------
107
+ // Main object
108
+ // ---------------------------------------------------------------------------
109
+ return {
110
+
111
+ // -------------------------------------------------------------------------
112
+ // init()
113
+ // adapter initializer
114
+ // -------------------------------------------------------------------------
115
+ init: function (options) {
116
+
117
+ {% if analytics %}
118
+ // [INFO ] [j1.adapter.analytics ] [ detected analytics provider (j1_config): {{analytics_provider}}} ]
119
+ // [INFO ] [j1.adapter.analytics ] [ start processing load region head, layout: {{page.layout}} ]
120
+
121
+ {% case analytics_provider %}
122
+ {% when "google" %}
123
+ // [INFO ] [j1.adapter.analytics ] [ place provider: Google Adsense ]
124
+
125
+ // -----------------------------------------------------------------------
126
+ // Default module settings
127
+ // -----------------------------------------------------------------------
128
+ var settings = $.extend({
129
+ module_name: 'j1.adapter.analytics',
130
+ generated: '{{site.time}}'
131
+ }, options);
132
+
133
+ // -----------------------------------------------------------------------
134
+ // Global variable settings
135
+ // -----------------------------------------------------------------------
136
+ _this = j1.adapter.analytics;
137
+ logger = log4javascript.getLogger('j1.adapter.analytics.google');
138
+
139
+ // initialize state flag
140
+ _this.setState('started');
141
+ logger.info('\n' + 'state: ' + _this.getState());
142
+ logger.info('\n' + 'module is being initialized');
143
+
144
+ // remove cookies on invalid GA config or left from a previous
145
+ // session/page view if they exists
146
+ // ---------------------------------------------------------------------
147
+ gaCookies = j1.findCookie('_ga');
148
+ gaCookies.forEach(function (item) {
149
+ logger.warn('\n' + 'delete cookie created by Google Analytics: ' + item);
150
+ if (hostname == 'localhost') {
151
+ j1.removeCookie({ name: item, domain: false, secure: false });
152
+ } else {
153
+ j1.removeCookie({ name: item, domain: '.' + hostname, secure: false });
154
+ }
155
+ });
156
+
157
+ var dependencies_met_page_ready = setInterval(function() {
158
+ if (j1.getState() == 'finished') {
159
+
160
+ gaExists = document.getElementById('google-tag-manager');
161
+ if (!gaExists) {
162
+ // add ga api dynamically in the head section
163
+ // -----------------------------------------------------------------
164
+ logger.info('\n' + 'Google Analytics API added in section: head');
165
+ gaScript.async = true;
166
+ gaScript.id = 'google-tag-manager';
167
+ gaScript.src = '//www.googletagmanager.com/gtag/js?id=' + providerID;
168
+ document.head.appendChild(gaScript);
169
+ }
170
+
171
+ user_consent = j1.readCookie(cookie_names.user_consent);
172
+ if (user_consent.analysis) {
173
+ if (validProviderID) {
174
+ logger.info('\n' + 'user consent on analytics: ' + user_consent.analysis);
175
+ logger.info('\n' + 'enable Google Analytics on ID: ' + providerID);
176
+ GTagOptIn.register(providerID);
177
+ GTagOptIn.optIn();
178
+ } else {
179
+ logger.warn('\n' + 'invalid trackig id detected for Google Analytics: ' + providerID);
180
+ }
181
+ } else {
182
+ logger.info('\n' + 'user consent on analytics: ' + user_consent.analysis);
183
+ logger.warn('\n' + 'disable Google Analytics on ID: ' + providerID);
184
+ GTagOptIn.register(providerID);
185
+ GTagOptIn.optOut();
186
+ }
187
+ clearInterval(dependencies_met_page_ready);
188
+ } // END if getState 'finished'
189
+ }, 25);
190
+
191
+ {% when "custom" %}
192
+ // [INFO ] [j1.adapter.analytics ] [ place provider: Custom Provider ]
193
+ {% endcase %}
194
+ // [INFO ] [j1.adapter.analytics ] [ end processing ]
195
+ {% else %}
196
+ var dependencies_met_page_ready = setInterval(function() {
197
+ if (j1.getState() == 'finished') {
198
+ logger = log4javascript.getLogger('j1.adapter.analytics.google');
199
+ logger.info('\n' + 'Google Analytics: disabled');
200
+ clearInterval(dependencies_met_page_ready);
201
+ }
202
+ }, 25);
203
+ {% endif %}
204
+ return;
205
+ }, // END init
206
+
207
+ // -------------------------------------------------------------------------
208
+ // messageHandler()
209
+ // manage messages send from other J1 modules
210
+ // -------------------------------------------------------------------------
211
+ messageHandler: function (sender, message) {
212
+ var json_message = JSON.stringify(message, undefined, 2);
213
+
214
+ logText = '\n' + 'received message from ' + sender + ': ' + json_message;
215
+ logger.debug(logText);
216
+
217
+ // -----------------------------------------------------------------------
218
+ // Process commands|actions
219
+ // -----------------------------------------------------------------------
220
+ if (message.type === 'command' && message.action === 'module_initialized') {
221
+ //
222
+ // Place handling of command|action here
223
+ //
224
+ logger.info('\n' + message.text);
225
+ }
226
+
227
+ //
228
+ // Place handling of other command|action here
229
+ //
230
+
231
+ return true;
232
+ }, // END messageHandler
233
+
234
+ // -------------------------------------------------------------------------
235
+ // setState()
236
+ // Sets the current (processing) state of the module
237
+ // -------------------------------------------------------------------------
238
+ setState: function (stat) {
239
+ _this.state = stat;
240
+ }, // END setState
241
+
242
+ // -------------------------------------------------------------------------
243
+ // getState()
244
+ // Returns the current (processing) state of the module
245
+ // -------------------------------------------------------------------------
246
+ getState: function () {
247
+ return _this.state;
248
+ } // END getState
249
+
250
+ }; // END return
251
+ })(j1, window);
252
+
253
+ {% endcapture %}
254
+ {% if production %}
255
+ {{ cache | minifyJS }}
256
+ {% else %}
257
+ {{ cache | strip_empty_lines }}
258
+ {% endif %}
259
+ {% assign cache = nil %}
@@ -44,10 +44,7 @@ regenerate: true
44
44
  /* eslint indent: "off" */
45
45
  // -----------------------------------------------------------------------------
46
46
  'use strict';
47
-
48
- {% comment %} Main
49
- -------------------------------------------------------------------------------- {% endcomment %}
50
- j1.adapter['asciidoctor'] = (function (j1, window) {
47
+ j1.adapter.asciidoctor = (function (j1, window) {
51
48
 
52
49
  {% comment %} Set global variables
53
50
  ------------------------------------------------------------------------------ {% endcomment %}
@@ -72,7 +69,15 @@ j1.adapter['asciidoctor'] = (function (j1, window) {
72
69
  init: function (options) {
73
70
 
74
71
  // -----------------------------------------------------------------------
75
- // globals
72
+ // Default module settings
73
+ // -----------------------------------------------------------------------
74
+ var settings = $.extend({
75
+ module_name: 'j1.adapter.rtable',
76
+ generated: '{{site.time}}'
77
+ }, options);
78
+
79
+ // -----------------------------------------------------------------------
80
+ // Global variable settings
76
81
  // -----------------------------------------------------------------------
77
82
  _this = j1.adapter.asciidoctor;
78
83
  logger = log4javascript.getLogger('j1.adapter.asciidoctor');
@@ -82,14 +87,6 @@ j1.adapter['asciidoctor'] = (function (j1, window) {
82
87
  logger.info('\n' + 'state: ' + _this.getState());
83
88
  logger.info('\n' + 'module is being initialized');
84
89
 
85
- // -----------------------------------------------------------------------
86
- // Default module settings
87
- // -----------------------------------------------------------------------
88
- var settings = $.extend({
89
- module_name: 'j1.adapter.rtable',
90
- generated: '{{site.time}}'
91
- }, options);
92
-
93
90
  // -----------------------------------------------------------------------
94
91
  // asciidoctor initializer
95
92
  // -----------------------------------------------------------------------
@@ -81,10 +81,7 @@ regenerate: true
81
81
  /* eslint indent: "off" */
82
82
  // -----------------------------------------------------------------------------
83
83
  'use strict';
84
-
85
- {% comment %} Main
86
- -------------------------------------------------------------------------------- {% endcomment %}
87
- j1.adapter['attic'] = (function (j1, window) {
84
+ j1.adapter.attic = (function (j1, window) {
88
85
 
89
86
  {% comment %} Set global variables
90
87
  ------------------------------------------------------------------------------ {% endcomment %}
@@ -105,7 +102,15 @@ j1.adapter['attic'] = (function (j1, window) {
105
102
  init: function (options) {
106
103
 
107
104
  // -----------------------------------------------------------------------
108
- // globals
105
+ // Default module settings
106
+ // -----------------------------------------------------------------------
107
+ var settings = $.extend({
108
+ module_name: 'j1.adapter.attic',
109
+ generated: '{{site.time}}'
110
+ }, options);
111
+
112
+ // -----------------------------------------------------------------------
113
+ // Global variable settings
109
114
  // -----------------------------------------------------------------------
110
115
  _this = j1.adapter.attic;
111
116
  logger = log4javascript.getLogger('j1.adapter.attic');
@@ -44,10 +44,7 @@ regenerate: false
44
44
  /* eslint indent: "off" */
45
45
  // -----------------------------------------------------------------------------
46
46
  'use strict';
47
-
48
- {% comment %} Main
49
- -------------------------------------------------------------------------------- {% endcomment %}
50
- j1.adapter['bmd'] = (function (j1, window) {
47
+ j1.adapter.bmd = (function (j1, window) {
51
48
 
52
49
  {% comment %} Set global variables
53
50
  ------------------------------------------------------------------------------ {% endcomment %}
@@ -72,7 +69,15 @@ j1.adapter['bmd'] = (function (j1, window) {
72
69
  init: function (options) {
73
70
 
74
71
  // -----------------------------------------------------------------------
75
- // globals
72
+ // Default module settings
73
+ // -----------------------------------------------------------------------
74
+ var settings = $.extend({
75
+ module_name: 'j1.adapter.bmd',
76
+ generated: '{{site.time}}'
77
+ }, options);
78
+
79
+ // -----------------------------------------------------------------------
80
+ // Global variable settings
76
81
  // -----------------------------------------------------------------------
77
82
  _this = j1.adapter.bmd;
78
83
  logger = log4javascript.getLogger('j1.adapter.bmd');
@@ -81,15 +86,6 @@ j1.adapter['bmd'] = (function (j1, window) {
81
86
  _this.setState('started');
82
87
  logger.info('\n' + 'state: ' + _this.getState());
83
88
  logger.info('\n' + 'module is being initialized');
84
-
85
- // -----------------------------------------------------------------------
86
- // Default module settings
87
- // -----------------------------------------------------------------------
88
- var settings = $.extend({
89
- module_name: 'j1.adapter.bmd',
90
- generated: '{{site.time}}'
91
- }, options);
92
-
93
89
  // -----------------------------------------------------------------------
94
90
  // BMD initializer
95
91
  // -----------------------------------------------------------------------