j1-template 2022.0.7 → 2022.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (211) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/modules/ads/google_ad_content_home.html +11 -0
  3. data/_includes/themes/j1/modules/ads/google_ad_top_home.html +11 -0
  4. data/_layouts/default.html +0 -56
  5. data/apps/public/cc/index.adoc +0 -1
  6. data/assets/data/article_navigator/index.html +0 -1
  7. data/assets/data/news_panel_posts/index.html +0 -1
  8. data/assets/error_pages/HTTP444.html +4 -4
  9. data/assets/error_pages/HTTP445.html +7 -6
  10. data/assets/error_pages/HTTP446.html +110 -0
  11. data/assets/error_pages/HTTP447.html +110 -0
  12. data/assets/error_pages/HTTP448.html +111 -0
  13. data/assets/themes/j1/adapter/js/advertising.js +413 -0
  14. data/assets/themes/j1/adapter/js/algolia.js +1 -4
  15. data/assets/themes/j1/adapter/js/analytics.js +237 -0
  16. data/assets/themes/j1/adapter/js/asciidoctor.js +1 -4
  17. data/assets/themes/j1/adapter/js/attic.js +1 -4
  18. data/assets/themes/j1/adapter/js/bmd.js +1 -4
  19. data/assets/themes/j1/adapter/js/carousel.js +1 -4
  20. data/assets/themes/j1/adapter/js/clipboard.js +1 -2
  21. data/assets/themes/j1/adapter/js/comments.js +387 -0
  22. data/assets/themes/j1/adapter/js/cookieConsent.js +103 -59
  23. data/assets/themes/j1/adapter/js/fab.js +1 -1
  24. data/assets/themes/j1/adapter/js/framer.js +1 -7
  25. data/assets/themes/j1/adapter/js/j1.js +157 -354
  26. data/assets/themes/j1/adapter/js/justifiedGallery.js +1 -4
  27. data/assets/themes/j1/adapter/js/justifiedGalleryCustomizer.js +1 -4
  28. data/assets/themes/j1/adapter/js/lightbox.js +1 -5
  29. data/assets/themes/j1/adapter/js/logger.js +1 -2
  30. data/assets/themes/j1/adapter/js/mmenu.js +2 -3
  31. data/assets/themes/j1/adapter/js/navigator.js +4 -3
  32. data/assets/themes/j1/adapter/js/quicksearch.js +1 -4
  33. data/assets/themes/j1/adapter/js/rouge.js +2 -5
  34. data/assets/themes/j1/adapter/js/rtable.js +1 -4
  35. data/assets/themes/j1/adapter/js/rtextResizer.js +1 -4
  36. data/assets/themes/j1/adapter/js/scroller.js +2 -5
  37. data/assets/themes/j1/adapter/js/themer.js +1 -1
  38. data/assets/themes/j1/adapter/js/toccer.js +1 -4
  39. data/assets/themes/j1/adapter/js/translator.js +121 -112
  40. data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +6 -0
  41. data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +1 -1
  42. data/assets/themes/j1/core/js/template.js +13 -5
  43. data/assets/themes/j1/core/js/template.min.js +1 -1
  44. data/assets/themes/j1/core/js/template.min.js.map +1 -1
  45. data/assets/themes/j1/modules/advertising/js/google/adInitializer.js +117 -0
  46. data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.js +29 -13
  47. data/assets/themes/j1/modules/cookieConsent/js/cookieConsent.min.js +1 -1
  48. data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.2.js +1 -1
  49. data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.js +1 -1
  50. data/assets/themes/j1/modules/scroller/js/scroller.js +1 -1
  51. data/assets/themes/j1/modules/translator/js/translator.js +97 -62
  52. data/assets/themes/j1/modules/translator/js/translator.min.js +1 -1
  53. data/lib/j1/version.rb +1 -1
  54. data/lib/starter_web/Gemfile +1 -1
  55. data/lib/starter_web/_config.yml +1 -13
  56. data/lib/starter_web/_data/apps/carousel.yml +2 -2
  57. data/lib/starter_web/_data/apps/defaults/carousel.yml +3 -2
  58. data/lib/starter_web/_data/apps/defaults/justifiedGallery.yml +2 -2
  59. data/lib/starter_web/_data/apps/defaults/justifiedGalleryCustomizer.yml +2 -2
  60. data/lib/starter_web/_data/apps/defaults/lightGallery.yml +2 -2
  61. data/lib/starter_web/_data/apps/defaults/lightbox.yml +2 -2
  62. data/lib/starter_web/_data/apps/justifiedGallery.yml +2 -2
  63. data/lib/starter_web/_data/apps/justifiedGalleryCustomizer.yml +2 -2
  64. data/lib/starter_web/_data/apps/lightGallery.yml +2 -2
  65. data/lib/starter_web/_data/apps/lightbox.yml +2 -2
  66. data/lib/starter_web/_data/blocks/banner.yml +3 -2
  67. data/lib/starter_web/_data/blocks/defaults/banner.yml +9 -0
  68. data/lib/starter_web/_data/blocks/defaults/footer.yml +9 -0
  69. data/lib/starter_web/_data/blocks/defaults/panel.yml +9 -0
  70. data/lib/starter_web/_data/blocks/footer.yml +3 -2
  71. data/lib/starter_web/_data/blocks/panel.yml +3 -2
  72. data/lib/starter_web/_data/builder/blog_navigator.yml +3 -2
  73. data/lib/starter_web/_data/builder/defaults/blog_navigator.yml +8 -8
  74. data/lib/starter_web/_data/j1_config.yml +0 -116
  75. data/lib/starter_web/_data/layouts/default.yml +21 -21
  76. data/lib/starter_web/_data/layouts/home.yml +24 -0
  77. data/lib/starter_web/_data/layouts/page.yml +7 -18
  78. data/lib/starter_web/_data/layouts/post.yml +0 -11
  79. data/lib/starter_web/_data/modules/advertising.yml +140 -12
  80. data/lib/starter_web/_data/modules/analytics.yml +99 -0
  81. data/lib/starter_web/_data/modules/attics.yml +3 -2
  82. data/lib/starter_web/_data/modules/comments.yml +55 -0
  83. data/lib/starter_web/_data/modules/cookieconsent.yml +2 -1
  84. data/lib/starter_web/_data/modules/cookies.yml +3 -1
  85. data/lib/starter_web/_data/modules/defaults/advertising.yml +106 -0
  86. data/lib/starter_web/_data/modules/defaults/analytics.yml +93 -0
  87. data/lib/starter_web/_data/modules/defaults/attics.yml +3 -2
  88. data/lib/starter_web/_data/modules/defaults/authentication.yml +51 -48
  89. data/lib/starter_web/_data/modules/defaults/comments.yml +114 -0
  90. data/lib/starter_web/_data/modules/defaults/cookieconsent.yml +6 -6
  91. data/lib/starter_web/_data/modules/defaults/cookies.yml +90 -6
  92. data/lib/starter_web/_data/modules/defaults/fab.yml +4 -2
  93. data/lib/starter_web/_data/modules/defaults/framer.yml +2 -3
  94. data/lib/starter_web/_data/modules/defaults/log4javascript.yml +3 -2
  95. data/lib/starter_web/_data/modules/defaults/log4r.yml +2 -2
  96. data/lib/starter_web/_data/modules/defaults/navigator.yml +4 -2
  97. data/lib/starter_web/_data/modules/defaults/quicksearch.yml +4 -3
  98. data/lib/starter_web/_data/modules/defaults/rtable.yml +3 -2
  99. data/lib/starter_web/_data/modules/defaults/scoller.yml +3 -2
  100. data/lib/starter_web/_data/modules/defaults/themer.yml +119 -118
  101. data/lib/starter_web/_data/modules/defaults/toccer.yml +1 -1
  102. data/lib/starter_web/_data/modules/defaults/translator.yml +1 -1
  103. data/lib/starter_web/_data/modules/fab.yml +3 -2
  104. data/lib/starter_web/_data/modules/framer.yml +3 -4
  105. data/lib/starter_web/_data/modules/log4r.yml +2 -2
  106. data/lib/starter_web/_data/modules/navigator.yml +4 -2
  107. data/lib/starter_web/_data/modules/quicksearch.yml +3 -3
  108. data/lib/starter_web/_data/modules/rtable.yml +3 -3
  109. data/lib/starter_web/_data/modules/scroller.yml +2 -3
  110. data/lib/starter_web/_data/modules/themer.yml +2 -3
  111. data/lib/starter_web/_data/modules/toccer.yml +3 -3
  112. data/lib/starter_web/_data/modules/translator.yml +1 -1
  113. data/lib/starter_web/_data/plugins/defaults/paginator.yml +2 -2
  114. data/lib/starter_web/_data/plugins/paginator.yml +2 -2
  115. data/lib/starter_web/_data/resources.yml +447 -290
  116. data/lib/starter_web/_includes/attributes.asciidoc +1 -1
  117. data/lib/starter_web/_includes/themes/j1/modules/ads/google_ad_content_home.html +11 -0
  118. data/lib/starter_web/_includes/themes/j1/modules/ads/google_ad_top_home.html +11 -0
  119. data/lib/starter_web/_plugins/lunr_index.rb +1 -1
  120. data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.ads.asciidoc +196 -0
  121. data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.comments.asciidoc +182 -0
  122. data/lib/starter_web/index.html +0 -1
  123. data/lib/starter_web/package.json +1 -1
  124. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +0 -1
  125. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +0 -1
  126. data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +0 -1
  127. data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +0 -1
  128. data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +0 -1
  129. data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +0 -1
  130. data/lib/starter_web/pages/public/blog/navigator/archive.html +0 -1
  131. data/lib/starter_web/pages/public/blog/navigator/index.html +0 -1
  132. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +4 -3
  133. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.ads.asciidoc +265 -0
  134. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.base.asciidoc +237 -0
  135. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.comments.asciidoc +237 -0
  136. data/lib/starter_web/pages/public/learn/roundtrip/100_present_videos.adoc +62 -0
  137. data/lib/starter_web/pages/public/learn/roundtrip/_includes/google-ad.js +130 -0
  138. data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +0 -1
  139. data/lib/starter_web/pages/public/legal/en/200_impress.adoc +0 -1
  140. data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +0 -1
  141. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  142. data/lib/starter_web/utilsrv/package.json +1 -1
  143. metadata +24 -70
  144. data/_includes/themes/j1/blocks/ads/ad.html +0 -64
  145. data/_includes/themes/j1/modules/boards/news_pin_board.html +0 -183
  146. data/_includes/themes/j1/modules/connectors/ad/custom-provider.html +0 -30
  147. data/_includes/themes/j1/modules/connectors/ad/google-adsense.html +0 -62
  148. data/_includes/themes/j1/modules/connectors/ads +0 -56
  149. data/_includes/themes/j1/modules/connectors/analytic/custom-provider.html +0 -32
  150. data/_includes/themes/j1/modules/connectors/analytic/google-analytics.html +0 -30
  151. data/_includes/themes/j1/modules/connectors/analytics +0 -60
  152. data/_includes/themes/j1/modules/connectors/comment/commento.html +0 -31
  153. data/_includes/themes/j1/modules/connectors/comment/custom-provider.html +0 -30
  154. data/_includes/themes/j1/modules/connectors/comment/disqus.html +0 -32
  155. data/_includes/themes/j1/modules/connectors/comment/facebook.html +0 -30
  156. data/_includes/themes/j1/modules/connectors/comment/hyvor.html +0 -32
  157. data/_includes/themes/j1/modules/connectors/comment/just-comments.html +0 -31
  158. data/_includes/themes/j1/modules/connectors/comments +0 -64
  159. data/_includes/themes/j1/modules/connectors/sharing +0 -29
  160. data/_includes/themes/j1/modules/connectors/survey/custom-provider.html +0 -30
  161. data/_includes/themes/j1/modules/connectors/survey/jotform.html +0 -32
  162. data/_includes/themes/j1/modules/connectors/surveys +0 -58
  163. data/_includes/themes/j1/modules/connectors/translator +0 -58
  164. data/_includes/themes/j1/modules/connectors/translators/custom-translator.html +0 -32
  165. data/_includes/themes/j1/modules/connectors/translators/google-translator.html +0 -53
  166. data/_includes/themes/j1/modules/search/algolia.html +0 -181
  167. data/_includes/themes/j1/modules/search/docsearch.html +0 -42
  168. data/assets/data/disqus.js +0 -81
  169. data/assets/data/hyvor.js +0 -72
  170. data/lib/starter_web/pages/_test_pages/100_side-bar-tester.adoc +0 -244
  171. data/lib/starter_web/pages/_test_pages/_includes/attributes.asciidoc +0 -110
  172. data/lib/starter_web/pages/_test_pages/_includes/documents/100_gistblock.asciidoc +0 -28
  173. data/lib/starter_web/pages/_test_pages/_includes/documents/410_bottom_info.asciidoc +0 -14
  174. data/lib/starter_web/pages/_test_pages/_includes/documents/410_bottom_left_warning.asciidoc +0 -11
  175. data/lib/starter_web/pages/_test_pages/_includes/documents/410_bottom_right_danger.asciidoc +0 -11
  176. data/lib/starter_web/pages/_test_pages/_includes/documents/410_central_success.asciidoc +0 -11
  177. data/lib/starter_web/pages/_test_pages/_includes/documents/410_full_height_left_info.asciidoc +0 -11
  178. data/lib/starter_web/pages/_test_pages/_includes/documents/410_full_height_right_success.asciidoc +0 -11
  179. data/lib/starter_web/pages/_test_pages/_includes/documents/410_table_bs_modal_examples.asciidoc +0 -47
  180. data/lib/starter_web/pages/_test_pages/_includes/documents/410_top_info.asciidoc +0 -11
  181. data/lib/starter_web/pages/_test_pages/_includes/documents/410_top_left_info.asciidoc +0 -11
  182. data/lib/starter_web/pages/_test_pages/_includes/documents/410_top_right_success.asciidoc +0 -11
  183. data/lib/starter_web/pages/_test_pages/_includes/documents/419_advanced_modals_demo.asciidoc +0 -337
  184. data/lib/starter_web/pages/_test_pages/_includes/documents/tables/bs_modal_examples.asciidoc +0 -47
  185. data/lib/starter_web/pages/_test_pages/accordion-01-tester.adoc +0 -220
  186. data/lib/starter_web/pages/_test_pages/accordion-02-tester.adoc +0 -177
  187. data/lib/starter_web/pages/_test_pages/accordion-03-tester.adoc +0 -148
  188. data/lib/starter_web/pages/_test_pages/attribute-changes-01-tester.adoc +0 -226
  189. data/lib/starter_web/pages/_test_pages/backdrop-tester.adoc +0 -109
  190. data/lib/starter_web/pages/_test_pages/button-tester-1.adoc +0 -127
  191. data/lib/starter_web/pages/_test_pages/card-tester.adoc +0 -128
  192. data/lib/starter_web/pages/_test_pages/cookieConsent.adoc +0 -96
  193. data/lib/starter_web/pages/_test_pages/deepl.0.adoc +0 -258
  194. data/lib/starter_web/pages/_test_pages/deepl.adoc +0 -204
  195. data/lib/starter_web/pages/_test_pages/desandro-button.adoc +0 -171
  196. data/lib/starter_web/pages/_test_pages/desandro.adoc +0 -147
  197. data/lib/starter_web/pages/_test_pages/flipcard-1-tester.adoc +0 -308
  198. data/lib/starter_web/pages/_test_pages/formular-01-tester.adoc +0 -167
  199. data/lib/starter_web/pages/_test_pages/formular-02-tester.adoc +0 -727
  200. data/lib/starter_web/pages/_test_pages/google-translate-tester.0.adoc +0 -113
  201. data/lib/starter_web/pages/_test_pages/google-translate-tester.1.adoc +0 -231
  202. data/lib/starter_web/pages/_test_pages/google-translate-tester.3.adoc +0 -149
  203. data/lib/starter_web/pages/_test_pages/google-translate-tester.4.adoc +0 -237
  204. data/lib/starter_web/pages/_test_pages/infinite-scroll-tester-2.adoc +0 -183
  205. data/lib/starter_web/pages/_test_pages/infinite-scroll-tester-3.adoc +0 -235
  206. data/lib/starter_web/pages/_test_pages/infinite-scroll-tester-4.adoc +0 -222
  207. data/lib/starter_web/pages/_test_pages/infinite-scroll-tester-5.adoc +0 -119
  208. data/lib/starter_web/pages/_test_pages/infinite-scroll-tester.1.adoc +0 -236
  209. data/lib/starter_web/pages/_test_pages/infinite-scroll-tester.adoc +0 -225
  210. data/lib/starter_web/pages/_test_pages/list-group-tester.adoc +0 -265
  211. data/lib/starter_web/pages/_test_pages/tictok.adoc +0 -127
@@ -0,0 +1,413 @@
1
+ ---
2
+ regenerate: true
3
+ ---
4
+
5
+ {% capture cache %}
6
+
7
+ {% comment %}
8
+ # -----------------------------------------------------------------------------
9
+ # ~/assets/themes/j1/adapter/js/advertising.js
10
+ # Liquid template to adapt advertising plugin
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
+ # advertising_options: {{ advertising_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 cookie_defaults = modules.defaults.cookies.defaults %}
45
+ {% assign cookie_settings = modules.cookies.settings %}
46
+ {% assign advertising_defaults = modules.defaults.advertising.defaults %}
47
+ {% assign advertising_settings = modules.advertising.settings %}
48
+
49
+ {% comment %} Set config options (settings only)
50
+ -------------------------------------------------------------------------------- {% endcomment %}
51
+ {% assign cookie_options = cookie_defaults | merge: cookie_settings %}
52
+ {% assign advertising_options = advertising_defaults | merge: advertising_settings %}
53
+
54
+ {% comment %} Variables
55
+ -------------------------------------------------------------------------------- {% endcomment %}
56
+ {% assign advertising = advertising_options.enabled %}
57
+ {% assign advertising_provider = advertising_options.provider %}
58
+
59
+ {% assign production = false %}
60
+ {% if environment == 'prod' or environment == 'production' %}
61
+ {% assign production = true %}
62
+ {% endif %}
63
+
64
+ /*
65
+ # -----------------------------------------------------------------------------
66
+ # ~/assets/themes/j1/adapter/js/advertising.js
67
+ # J1 Adapter for advertising
68
+ #
69
+ # Product/Info:
70
+ # https://jekyll.one
71
+ #
72
+ # Copyright (C) 2021 Juergen Adams
73
+ #
74
+ # J1 Template is licensed under the MIT License.
75
+ # For details, see https://jekyll.one
76
+ # -----------------------------------------------------------------------------
77
+ # Adapter generated: {{site.time}}
78
+ # -----------------------------------------------------------------------------
79
+ */
80
+
81
+ // -----------------------------------------------------------------------------
82
+ // ESLint shimming
83
+ // -----------------------------------------------------------------------------
84
+ /* eslint indent: "off" */
85
+ // -----------------------------------------------------------------------------
86
+ 'use strict';
87
+ j1.adapter.advertising = (function (j1, window) {
88
+
89
+ {% comment %} Set global variables
90
+ -------------------------------------------------------------------------------- {% endcomment %}
91
+ var environment = '{{environment}}';
92
+ var gadScript = document.createElement('script');
93
+ var adInitializerScript = document.createElement('script');
94
+ var autoHideOnUnfilled = {{advertising_options.google.autoHideOnUnfilled}};
95
+ var addBorderOnUnfilled = {{advertising_options.google.addBorderOnUnfilled}};
96
+ var checkTrackingProtection = {{advertising_options.google.checkTrackingProtection}};
97
+ var showErrorPageOnBlocked = {{advertising_options.google.showErrorPageOnBlocked}};
98
+ var adInitializerScriptText;
99
+ var tracking_protection;
100
+ var url;
101
+ var baseUrl;
102
+ var hostname;
103
+ var cookie_names;
104
+ var user_consent;
105
+ var domain;
106
+ var domainAttribute;
107
+ var cookie_option_domain;
108
+ var cookie_domain;
109
+ var _this;
110
+ var logger;
111
+ var logText;
112
+
113
+ // ---------------------------------------------------------------------------
114
+ // Main object
115
+ // ---------------------------------------------------------------------------
116
+ return {
117
+
118
+ // -------------------------------------------------------------------------
119
+ // init()
120
+ // adapter initializer
121
+ // -------------------------------------------------------------------------
122
+ init: function (options) {
123
+
124
+ {% if advertising %}
125
+ // [INFO ] [j1.adapter.advertising ] [ detected advertising provider (j1_config): {{advertising_provider}}} ]
126
+ // [INFO ] [j1.adapter.advertising ] [ start processing load region head, layout: {{page.layout}} ]
127
+
128
+ cookie_names = j1.getCookieNames();
129
+ user_consent = j1.readCookie(cookie_names.user_consent);
130
+ url = new liteURL(window.location.href);
131
+ baseUrl = url.origin;
132
+ hostname = url.hostname;
133
+ domain = hostname.substring(hostname.lastIndexOf('.', hostname.lastIndexOf('.') - 1) + 1);
134
+ cookie_option_domain = '{{cookie_options.domain}}';
135
+
136
+ // set domain used by cookies
137
+ if (cookie_option_domain == 'auto') {
138
+ domainAttribute = domain ;
139
+ } else {
140
+ domainAttribute = hostname;
141
+ }
142
+
143
+ {% case advertising_provider %}
144
+ {% when "google" %}
145
+ // [INFO ] [j1.adapter.advertising ] [ place provider: Google Adsense ]
146
+ _this = j1.adapter.advertising;
147
+ logger = log4javascript.getLogger('j1.adapter.advertising.google');
148
+ // initialize state flag
149
+ _this.setState('started');
150
+ logger.info('\n' + 'state: ' + _this.getState());
151
+ logger.info('\n' + 'module is being initialized');
152
+ // default module settings
153
+ var settings = $.extend({
154
+ module_name: 'j1.adapter.advertising',
155
+ generated: '2021-12-18 18:55:38 +0000'
156
+ }, options);
157
+
158
+ var dependencies_met_page_ready = setInterval(function() {
159
+ if (j1.getState() == 'finished') {
160
+ if (user_consent.personalization) {
161
+ // place all ads configured for the page
162
+ // NOTE: currently NOT implemented/used
163
+ // -----------------------------------------------------------------
164
+ // _this.place_ads();
165
+
166
+ // add gad api dynamically in the head section
167
+ // -----------------------------------------------------------------
168
+ logger.info('\n' + 'add gad api dynamically in section: head');
169
+ gadScript.async = true;
170
+ gadScript.id = 'gad-api';
171
+ gadScript.src = '//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';
172
+ gadScript.setAttribute('data-ad-client', 'ca-pub-3885670015316130');
173
+ document.head.appendChild(gadScript);
174
+
175
+ // setup monitor for state changes on all ads configured
176
+ // ---------------------------------------------------------------
177
+ logger.info('\n' + 'setup monitoring');
178
+ _this.monitor_ads();
179
+
180
+ // run protection check
181
+ // -------------------------------------------------------------------
182
+ if (checkTrackingProtection) {
183
+ logger.info('\n' + 'run checks for tracking protection');
184
+ _this.check_tracking_protection();
185
+
186
+ var dependencies_met_tracking_check_ready = setInterval (function (options) {
187
+ if (typeof tracking_protection !== 'undefined' ) {
188
+
189
+ var browser_tracking_feature = navigator.DoNotTrack;
190
+
191
+ if (!tracking_protection && !browser_tracking_feature) {
192
+ logText = '\n' + 'tracking protection: disabled';
193
+ logger.info(logText);
194
+ } else {
195
+ logText = '\n' + 'tracking protection: enabled';
196
+ logger.warn(logText);
197
+
198
+ if (showErrorPageOnBlocked) {
199
+ logger.error('\n' + 'redirect to error page (blocked content): HTML-447');
200
+ // redirect to error page: blocked content
201
+ window.location.href = '/447.html';
202
+ }
203
+ }
204
+ }
205
+ clearInterval(dependencies_met_tracking_check_ready);
206
+ }, 25);
207
+ } else {
208
+ // setup monitor for state changes on all ads configured
209
+ // ---------------------------------------------------------------
210
+ logger.info('\n' + 'setup monitoring');
211
+ _this.monitor_ads();
212
+
213
+ _this.setState('finished');
214
+ logger.info('\n' + 'state: ' + _this.getState());
215
+ logger.info('\n' + 'module initialized successfully');
216
+ clearInterval(dependencies_met_tracking_check_ready);
217
+ }
218
+ clearInterval(dependencies_met_page_ready);
219
+ } else {
220
+ var gaCookies = j1.findCookie('_ga');
221
+ logger.warn('\n' + 'consent on cookies disabled for personalization');
222
+ logger.warn('\n' + 'initialization of module advertising skipped');
223
+
224
+ // jadams, 2021-12-19: remove cookies on invalid GAD config
225
+ // or left cookies from previous session
226
+ // -----------------------------------------------------------------
227
+ j1.removeCookie({ name: '__gads' });
228
+
229
+ // jadams, 2021-12-19: delete cookies in loop doesn't work
230
+ // gaCookies.forEach(function (item) {
231
+ // logger.warn('\n' + 'delete GAD cookie: ' + item);
232
+ // // j1.removeCookie({ name: item, domain: domainAttribute });
233
+ // // j1.removeCookie({ name: item });
234
+ // });
235
+
236
+ if (checkTrackingProtection) {
237
+ if (!user_consent.personalization) {
238
+ logText = '\n' + 'consent on cookies disabled for personalization';
239
+ logger.warn(logText);
240
+
241
+ if (showErrorPageOnBlocked) {
242
+ logger.error('\n' + 'redirect to error page (blocked content): HTML-447');
243
+ // redirect to error page: blocked content
244
+ window.location.href = '/448.html';
245
+ }
246
+ }
247
+ }
248
+ clearInterval(dependencies_met_page_ready);
249
+ } // END if user_consent.personalization
250
+ } // END if getState 'finished'
251
+ }, 25);
252
+
253
+ {% when "custom" %}
254
+ // [INFO ] [j1.adapter.advertising ] [ place provider: Custom Provider ]
255
+ {% endcase %}
256
+ // [INFO ] [j1.adapter.advertising ] [ end processing ]
257
+ {% else %}
258
+ var dependencies_met_page_ready = setInterval(function() {
259
+ if (j1.getState() == 'finished') {
260
+ var ads_found = document.getElementsByClassName('adsbygoogle').length;
261
+ logger = log4javascript.getLogger('j1.adapter.advertising.google');
262
+ logger.warn('\n' + 'found ads in page: #' + ads_found);
263
+ logger.warn('\n' + 'no ads initialized, advertising disabled');
264
+ clearInterval(dependencies_met_page_ready);
265
+ }
266
+ }, 25);
267
+ {% endif %}
268
+ return;
269
+ }, // END init
270
+
271
+ // -------------------------------------------------------------------------
272
+ // monitor_ads()
273
+ // monitor for state changes on the ad
274
+ // -------------------------------------------------------------------------
275
+ monitor_ads: function () {
276
+
277
+ $('.adsbygoogle').attrchange({
278
+ trackValues: true,
279
+ callback: function (event) {
280
+ if (event.newValue === 'unfilled') {
281
+ var elm = event.target.dataset;
282
+ if (addBorderOnUnfilled) { $('.adsbygoogle').addClass('border--dotted'); }
283
+ if (elm.adClient) {
284
+ logger.warn('\n' + 'found ad state ' + event.newValue + ' for slot: ' + elm.adSlot);
285
+ if (autoHideOnUnfilled) {
286
+ logger.warn('\n' + ' hide ad for slot: ' + elm.adSlot);
287
+ $('#' + elm.adSlot ).hide();
288
+ }
289
+ }
290
+ }
291
+ }
292
+ });
293
+ },
294
+
295
+ // -------------------------------------------------------------------------
296
+ // check_tracking_protection()
297
+ // detect if a user is using tracking protection
298
+ // NOTE:
299
+ // Firefox uses a list obtained from 'https://disconnect.me/trackerprotection'
300
+ // for its tracking protection. The checker use an image loaded from a
301
+ // domain that is on that list (facebook.com), and an image that will
302
+ // exist (tracking pixel).
303
+ //
304
+ // See for more details:
305
+ // https://stackoverflow.com/questions/33959324/how-to-detect-if-a-user-is-using-tracking-protection-in-firefox-42
306
+ // -------------------------------------------------------------------------
307
+ check_tracking_protection: function () {
308
+ var logger = log4javascript.getLogger('j1.adapter.advertising.tracking.monitor');
309
+
310
+ logText = '\n' + 'check for trackingprotection';
311
+ logger.info(logText);
312
+
313
+ function checkTrackingProtection() {
314
+ if (!checkTrackingProtection.promise) {
315
+ checkTrackingProtection.promise = new Promise(function(resolve, reject) {
316
+
317
+ var time = Date.now();
318
+ var img = new Image();
319
+ img.onload = resolve;
320
+ img.onerror = function() {
321
+ if ((Date.now() - time) < 50) {
322
+ reject(new Error("Rejected."));
323
+ } else {
324
+ resolve(new Error("Takes too long."));
325
+ }
326
+ };
327
+ img.src = '//www.facebook.com/tr/';
328
+ }).then((result) => {
329
+ tracking_protection = false;
330
+ }).catch(e => {
331
+ tracking_protection = true;
332
+ logger.debug('\n' + 'detection details: ' + e);
333
+ });
334
+ }
335
+ }
336
+ checkTrackingProtection();
337
+ }, // END check_tracking_protection
338
+
339
+ // -------------------------------------------------------------------------
340
+ // place_ads()
341
+ // place ads configured|enabled
342
+ // -------------------------------------------------------------------------
343
+ place_ads: function () {
344
+
345
+ logText = '\n' + 'ads are being placed';
346
+ logger.info(logText);
347
+
348
+ // START loadig ads
349
+ var dependencies_met_page_ready = setInterval (function (options) {
350
+ if (j1.getState() === 'finished') {
351
+
352
+ {% comment %} See loop for loading elements with adapter/scroller.js
353
+ ---------------------------------------------------------------------- {% endcomment %}
354
+ clearInterval(dependencies_met_page_ready);
355
+
356
+ }
357
+ });
358
+ // END place ads
359
+ },
360
+
361
+ // -------------------------------------------------------------------------
362
+ // messageHandler()
363
+ // manage messages send from other J1 modules
364
+ // -------------------------------------------------------------------------
365
+ messageHandler: function (sender, message) {
366
+ var json_message = JSON.stringify(message, undefined, 2);
367
+
368
+ logText = '\n' + 'received message from ' + sender + ': ' + json_message;
369
+ logger.debug(logText);
370
+
371
+ // -----------------------------------------------------------------------
372
+ // Process commands|actions
373
+ // -----------------------------------------------------------------------
374
+ if (message.type === 'command' && message.action === 'module_initialized') {
375
+ //
376
+ // Place handling of command|action here
377
+ //
378
+ logger.info('\n' + message.text);
379
+ }
380
+
381
+ //
382
+ // Place handling of other command|action here
383
+ //
384
+
385
+ return true;
386
+ }, // END messageHandler
387
+
388
+ // -------------------------------------------------------------------------
389
+ // setState()
390
+ // Sets the current (processing) state of the module
391
+ // -------------------------------------------------------------------------
392
+ setState: function (stat) {
393
+ _this.state = stat;
394
+ }, // END setState
395
+
396
+ // -------------------------------------------------------------------------
397
+ // getState()
398
+ // Returns the current (processing) state of the module
399
+ // -------------------------------------------------------------------------
400
+ getState: function () {
401
+ return _this.state;
402
+ } // END getState
403
+
404
+ }; // END return
405
+ })(j1, window);
406
+
407
+ {% endcapture %}
408
+ {% if production %}
409
+ {{ cache | minifyJS }}
410
+ {% else %}
411
+ {{ cache | strip_empty_lines }}
412
+ {% endif %}
413
+ {% assign cache = nil %}
@@ -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 %}
@@ -0,0 +1,237 @@
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 environment = '{{environment}}';
89
+ var gaScript = document.createElement('script');
90
+ var trackingID = '{{analytics_options.google.trackingID}}';
91
+ var optInOut = {{analytics_options.google.optInOut}};
92
+ var anonymizeIP = {{analytics_options.google.anonymizeIP}};
93
+ var cookie_names = j1.getCookieNames();
94
+ var gaCookies;
95
+ var user_consent;
96
+ var gaExists;
97
+ var _this;
98
+ var logger;
99
+ var logText;
100
+
101
+ // ---------------------------------------------------------------------------
102
+ // Main object
103
+ // ---------------------------------------------------------------------------
104
+ return {
105
+
106
+ // -------------------------------------------------------------------------
107
+ // init()
108
+ // adapter initializer
109
+ // -------------------------------------------------------------------------
110
+ init: function (options) {
111
+
112
+ {% if analytics %}
113
+ // [INFO ] [j1.adapter.analytics ] [ detected analytics provider (j1_config): {{analytics_provider}}} ]
114
+ // [INFO ] [j1.adapter.analytics ] [ start processing load region head, layout: {{page.layout}} ]
115
+
116
+ {% case analytics_provider %}
117
+ {% when "google" %}
118
+ // [INFO ] [j1.adapter.analytics ] [ place provider: Google Adsense ]
119
+ _this = j1.adapter.analytics;
120
+ logger = log4javascript.getLogger('j1.adapter.analytics.google');
121
+ // initialize state flag
122
+ _this.setState('started');
123
+ logger.info('\n' + 'state: ' + _this.getState());
124
+ logger.info('\n' + 'module is being initialized');
125
+ // default module settings
126
+ var settings = $.extend({
127
+ module_name: 'j1.adapter.analytics',
128
+ generated: '2021-12-18 18:55:38 +0000'
129
+ }, options);
130
+
131
+ // remove all ga cookies left from a previous session/page view
132
+ // -----------------------------------------------------------------------
133
+ gaCookies = j1.findCookie('_ga');
134
+ gaCookies.forEach(function (item) {
135
+ logger.warn('\n' + 'delete GA cookie: ' + item);
136
+ j1.removeCookie({ name: item });
137
+ });
138
+
139
+ var dependencies_met_page_ready = setInterval(function() {
140
+ if (j1.getState() == 'finished') {
141
+
142
+ gaExists = document.getElementById('google-tag-manager');
143
+ if (!gaExists) {
144
+ // add ga api dynamically in the head section
145
+ // -----------------------------------------------------------------
146
+ logger.info('\n' + 'add ga api dynamically in section: head');
147
+ gaScript.async = true;
148
+ gaScript.id = 'google-tag-manager';
149
+ gaScript.src = '//www.googletagmanager.com/gtag/js?id={{analytics_options.google.trackingID}}';
150
+ document.head.appendChild(gaScript);
151
+ }
152
+
153
+ user_consent = j1.readCookie(cookie_names.user_consent);
154
+ if (user_consent.analysis) {
155
+ logger.info('\n' + 'user consent on analytics: ' + user_consent.analysis);
156
+ logger.info('\n' + 'enable: GA');
157
+ GTagOptIn.register(trackingID);
158
+ GTagOptIn.optIn();
159
+ } else {
160
+ logger.info('\n' + 'user consent on analytics: ' + user_consent.analysis);
161
+ logger.warn('\n' + 'disable: GA');
162
+ GTagOptIn.register(trackingID);
163
+ GTagOptIn.optOut();
164
+ }
165
+ clearInterval(dependencies_met_page_ready);
166
+ } // END if getState 'finished'
167
+ }, 25);
168
+
169
+ {% when "custom" %}
170
+ // [INFO ] [j1.adapter.analytics ] [ place provider: Custom Provider ]
171
+ {% endcase %}
172
+ // [INFO ] [j1.adapter.analytics ] [ end processing ]
173
+ {% else %}
174
+ var dependencies_met_page_ready = setInterval(function() {
175
+ if (j1.getState() == 'finished') {
176
+ logger = log4javascript.getLogger('j1.adapter.analytics.google');
177
+ logger.info('\n' + 'ga: disabled');
178
+ clearInterval(dependencies_met_page_ready);
179
+ }
180
+ }, 25);
181
+ {% endif %}
182
+ return;
183
+ }, // END init
184
+
185
+ // -------------------------------------------------------------------------
186
+ // messageHandler()
187
+ // manage messages send from other J1 modules
188
+ // -------------------------------------------------------------------------
189
+ messageHandler: function (sender, message) {
190
+ var json_message = JSON.stringify(message, undefined, 2);
191
+
192
+ logText = '\n' + 'received message from ' + sender + ': ' + json_message;
193
+ logger.debug(logText);
194
+
195
+ // -----------------------------------------------------------------------
196
+ // Process commands|actions
197
+ // -----------------------------------------------------------------------
198
+ if (message.type === 'command' && message.action === 'module_initialized') {
199
+ //
200
+ // Place handling of command|action here
201
+ //
202
+ logger.info('\n' + message.text);
203
+ }
204
+
205
+ //
206
+ // Place handling of other command|action here
207
+ //
208
+
209
+ return true;
210
+ }, // END messageHandler
211
+
212
+ // -------------------------------------------------------------------------
213
+ // setState()
214
+ // Sets the current (processing) state of the module
215
+ // -------------------------------------------------------------------------
216
+ setState: function (stat) {
217
+ _this.state = stat;
218
+ }, // END setState
219
+
220
+ // -------------------------------------------------------------------------
221
+ // getState()
222
+ // Returns the current (processing) state of the module
223
+ // -------------------------------------------------------------------------
224
+ getState: function () {
225
+ return _this.state;
226
+ } // END getState
227
+
228
+ }; // END return
229
+ })(j1, window);
230
+
231
+ {% endcapture %}
232
+ {% if production %}
233
+ {{ cache | minifyJS }}
234
+ {% else %}
235
+ {{ cache | strip_empty_lines }}
236
+ {% endif %}
237
+ {% 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 %}
@@ -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 %}