j1-template 2023.2.7 → 2023.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/content_generator_news_panel_posts.html +2 -1
  3. data/_includes/themes/j1/layouts/content_generator_post.html +2 -2
  4. data/_includes/themes/j1/layouts/layout_metadata_generator.html +38 -38
  5. data/_includes/themes/j1/procedures/blocks/footer/boxes/about_box.proc +1 -1
  6. data/_includes/themes/j1/procedures/blocks/footer/boxes/contacts_box.proc +1 -1
  7. data/_includes/themes/j1/procedures/blocks/footer/boxes/issue.proc +1 -1
  8. data/_includes/themes/j1/procedures/blocks/footer/boxes/links_box.proc +1 -1
  9. data/_includes/themes/j1/procedures/blocks/footer/boxes/news_box.proc +1 -1
  10. data/_includes/themes/j1/procedures/layouts/default_writer.proc +1 -3
  11. data/_includes/themes/j1/procedures/layouts/module_writer.proc +7 -23
  12. data/_includes/themes/j1/procedures/layouts/resource_writer.proc +8 -8
  13. data/_includes/themes/j1/procedures/posts/create_series_header.proc +1 -1
  14. data/_layouts/compress.html +26 -21
  15. data/_layouts/default.html +36 -30
  16. data/assets/data/banner.html +5 -2
  17. data/assets/data/footer.html +15 -3
  18. data/assets/data/masonry.html +1 -1
  19. data/assets/data/masterslider.html +1 -0
  20. data/assets/data/menu.html +4 -4
  21. data/assets/data/panel.html +6 -3
  22. data/assets/data/quicklinks.html +138 -149
  23. data/assets/error_pages/HTTP204.html +3 -3
  24. data/assets/error_pages/HTTP400.html +3 -3
  25. data/assets/error_pages/HTTP401.html +3 -3
  26. data/assets/error_pages/HTTP403.html +3 -3
  27. data/assets/error_pages/HTTP404.html +3 -3
  28. data/assets/error_pages/HTTP444.html +3 -3
  29. data/assets/error_pages/HTTP445.html +3 -3
  30. data/assets/error_pages/HTTP446.html +5 -5
  31. data/assets/error_pages/HTTP447.html +7 -7
  32. data/assets/error_pages/HTTP448.html +7 -7
  33. data/assets/error_pages/HTTP500.html +3 -3
  34. data/assets/error_pages/HTTP501.html +3 -3
  35. data/assets/error_pages/HTTP502.html +3 -3
  36. data/assets/error_pages/HTTP503.html +3 -3
  37. data/assets/themes/j1/adapter/js/advertising.js +355 -156
  38. data/assets/themes/j1/adapter/js/analytics.js +1 -1
  39. data/assets/themes/j1/adapter/js/asciidoctor.js +1 -1
  40. data/assets/themes/j1/adapter/js/attic.js +22 -14
  41. data/assets/themes/j1/adapter/js/bmd.js +1 -1
  42. data/assets/themes/j1/adapter/js/carousel.js +5 -4
  43. data/assets/themes/j1/adapter/js/clipboard.js +1 -1
  44. data/assets/themes/j1/adapter/js/comments.js +5 -5
  45. data/assets/themes/j1/adapter/js/cookieConsent.js +1 -1
  46. data/assets/themes/j1/adapter/js/customFunctions.js +1 -1
  47. data/assets/themes/j1/adapter/js/customModule.js +1 -1
  48. data/assets/themes/j1/adapter/js/dropdowns.js +4 -2
  49. data/assets/themes/j1/adapter/js/fab.js +9 -6
  50. data/assets/themes/j1/adapter/js/framer.js +1 -1
  51. data/assets/themes/j1/adapter/js/iconPicker.js +227 -0
  52. data/assets/themes/j1/adapter/js/j1.js +402 -76
  53. data/assets/themes/j1/adapter/js/justifiedGallery.js +9 -3
  54. data/assets/themes/j1/adapter/js/justifiedGalleryCustomizer.js +2 -2
  55. data/assets/themes/j1/adapter/js/lightbox.js +4 -3
  56. data/assets/themes/j1/adapter/js/logger.js +1 -1
  57. data/assets/themes/j1/adapter/js/lunr.js +1 -1
  58. data/assets/themes/j1/adapter/js/masonry.js +4 -3
  59. data/assets/themes/j1/adapter/js/masterslider.js +30 -57
  60. data/assets/themes/j1/adapter/js/mmenu.js +2 -2
  61. data/assets/themes/j1/adapter/js/navigator.js +7 -5
  62. data/assets/themes/j1/adapter/js/nbinteract.js +9 -9
  63. data/assets/themes/j1/adapter/js/particles.js +2 -2
  64. data/assets/themes/j1/adapter/js/rangeSlider.js +2 -2
  65. data/assets/themes/j1/adapter/js/rouge.js +2 -2
  66. data/assets/themes/j1/adapter/js/rtable.js +1 -1
  67. data/assets/themes/j1/adapter/js/rtextResizer.js +1 -1
  68. data/assets/themes/j1/adapter/js/scroller.js +97 -109
  69. data/assets/themes/j1/adapter/js/slick.js +28 -18
  70. data/assets/themes/j1/adapter/js/themeToggler.js +259 -0
  71. data/assets/themes/j1/adapter/js/themer.js +63 -23
  72. data/assets/themes/j1/adapter/js/toccer.js +9 -6
  73. data/assets/themes/j1/adapter/js/translator.js +4 -2
  74. data/assets/themes/j1/adapter/js/waves.js +6 -4
  75. data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.css +1322 -417
  76. data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.min.css +3 -3
  77. data/assets/themes/j1/core/css/themes/unodark/bootstrap.css +2064 -1273
  78. data/assets/themes/j1/core/css/themes/unodark/bootstrap.min.css +3 -3
  79. data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +10280 -9399
  80. data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +10 -10
  81. data/assets/themes/j1/core/css/vendor.css +0 -14
  82. data/assets/themes/j1/core/css/vendor.min.css +1 -1
  83. data/assets/themes/j1/modules/backstretch/js/backstretch.js +6 -4
  84. data/assets/themes/j1/modules/backstretch/js/backstretch.min.js +1 -1
  85. data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.js +1 -1
  86. data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.min.js +1 -1
  87. data/assets/themes/j1/modules/iconPicker/README.md +266 -0
  88. data/assets/themes/j1/modules/iconPicker/css/universal-icon-picker.css +419 -0
  89. data/assets/themes/j1/modules/iconPicker/css/universal-icon-picker.min.css +17 -0
  90. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-brands.json +467 -0
  91. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-brands.min.json +1 -0
  92. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-regular.json +169 -0
  93. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-regular.min.json +1 -0
  94. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-solid.json +1136 -0
  95. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome-solid.min.json +1 -0
  96. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome.json +1772 -0
  97. data/assets/themes/j1/modules/iconPicker/icons-libraries/font-awesome.min.json +1 -0
  98. data/assets/themes/j1/modules/iconPicker/icons-libraries/mdi-icons-light.json +292 -0
  99. data/assets/themes/j1/modules/iconPicker/icons-libraries/mdi-icons-light.min.json +1 -0
  100. data/assets/themes/j1/modules/iconPicker/icons-libraries/mdi-icons-regular.json +7312 -0
  101. data/assets/themes/j1/modules/iconPicker/icons-libraries/mdi-icons-regular.min.json +1 -0
  102. data/assets/themes/j1/modules/iconPicker/images/magnifying-glass-solid.svg +1 -0
  103. data/assets/themes/j1/modules/iconPicker/images/star-of-life-solid.svg +3 -0
  104. data/assets/themes/j1/modules/iconPicker/images/xmark-solid.svg +3 -0
  105. data/assets/themes/j1/modules/iconPicker/js/universal-icon-picker.js +493 -0
  106. data/assets/themes/j1/modules/iconPicker/js/universal-icon-picker.min.js +17 -0
  107. data/assets/themes/j1/modules/jquery/AUTHORS.txt +372 -0
  108. data/assets/themes/j1/modules/jquery/LICENSE.txt +43 -0
  109. data/assets/themes/j1/modules/jquery/css/images/ui-icons_444444_256x240.png +0 -0
  110. data/assets/themes/j1/modules/jquery/css/images/ui-icons_555555_256x240.png +0 -0
  111. data/assets/themes/j1/modules/jquery/css/images/ui-icons_777620_256x240.png +0 -0
  112. data/assets/themes/j1/modules/jquery/css/images/ui-icons_777777_256x240.png +0 -0
  113. data/assets/themes/j1/modules/jquery/css/images/ui-icons_cc0000_256x240.png +0 -0
  114. data/assets/themes/j1/modules/jquery/css/images/ui-icons_ffffff_256x240.png +0 -0
  115. data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.css +92 -92
  116. data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.min.css +4 -4
  117. data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.structure.css +88 -88
  118. data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.structure.min.css +2 -2
  119. data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.theme.css +4 -4
  120. data/assets/themes/j1/modules/jquery/css/jquery-ui/jquery-ui.theme.min.css +2 -2
  121. data/assets/themes/j1/modules/jquery/js/jquery-ui.js +13683 -13678
  122. data/assets/themes/j1/modules/jquery/js/jquery-ui.min.js +3 -3
  123. data/assets/themes/j1/modules/jquery/js/jquery.js +1029 -1203
  124. data/assets/themes/j1/modules/jquery/js/jquery.min.js +2 -2
  125. data/assets/themes/j1/modules/jquery/js/jquery.min.map +1 -1
  126. data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.css +1315 -0
  127. data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.min.css +7 -0
  128. data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.structure.css +886 -0
  129. data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.structure.min.css +5 -0
  130. data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.theme.css +446 -0
  131. data/assets/themes/j1/modules/jquery-3.5.1/css/jquery-ui/jquery-ui.theme.min.css +5 -0
  132. data/assets/themes/j1/modules/jquery-3.5.1/js/extensions/hasClass.js +37 -0
  133. data/assets/themes/j1/modules/jquery-3.5.1/js/extensions/hasClass.min.js +17 -0
  134. data/assets/themes/j1/modules/jquery-3.5.1/js/extensions/removeClass.js +42 -0
  135. data/assets/themes/j1/modules/jquery-3.5.1/js/extensions/removeClass.min.js +17 -0
  136. data/assets/themes/j1/modules/jquery-3.5.1/js/jquery-ui.js +19057 -0
  137. data/assets/themes/j1/modules/jquery-3.5.1/js/jquery-ui.min.js +6 -0
  138. data/assets/themes/j1/modules/jquery-3.5.1/js/jquery.js +10872 -0
  139. data/assets/themes/j1/modules/jquery-3.5.1/js/jquery.min.js +2 -0
  140. data/assets/themes/j1/modules/jquery-3.5.1/js/jquery.min.map +1 -0
  141. data/assets/themes/j1/modules/jquery-3.5.1/js/require.js +2145 -0
  142. data/assets/themes/j1/modules/jquery-3.5.1/js/require.min.js +5 -0
  143. data/assets/themes/j1/modules/lightGallery/js/modules/j1/j1-video.js +2 -2
  144. data/assets/themes/j1/modules/lightGallery/js/modules/j1/j1-video.min.js +1 -1
  145. data/assets/themes/j1/modules/masterslider/css/theme/uno.css +9 -9
  146. data/assets/themes/j1/modules/masterslider/css/theme/uno.min.css +1 -1
  147. data/assets/themes/j1/modules/mmenuLight/css/theme/uno/mmenu.css +2 -2
  148. data/assets/themes/j1/modules/mmenuLight/css/theme/uno/mmenu.min.css +1 -1
  149. data/assets/themes/j1/modules/rouge/css/uno.dark/theme.css +136 -47
  150. data/assets/themes/j1/modules/rouge/css/uno.light/theme.css +9 -9
  151. data/assets/themes/j1/modules/scroller/js/scroller.js +76 -69
  152. data/assets/themes/j1/modules/scroller/js/scroller.min.js +1 -1
  153. data/assets/themes/j1/modules/translator/js/translator.js +1 -1
  154. data/assets/themes/j1/modules/translator/js/translator.min.js +1 -1
  155. data/lib/j1/version.rb +1 -1
  156. data/lib/starter_web/Gemfile +2 -2
  157. data/lib/starter_web/README.md +5 -5
  158. data/lib/starter_web/_config.yml +5 -2
  159. data/lib/starter_web/_data/blocks/banner.yml +8 -5
  160. data/lib/starter_web/_data/blocks/defaults/footer.yml +4 -4
  161. data/lib/starter_web/_data/blocks/footer.yml +12 -5
  162. data/lib/starter_web/_data/blocks/panel.yml +41 -38
  163. data/lib/starter_web/_data/j1_config.yml +68 -58
  164. data/lib/starter_web/_data/layouts/collection.yml +1 -0
  165. data/lib/starter_web/_data/layouts/default.yml +1 -1
  166. data/lib/starter_web/_data/layouts/home.yml +38 -9
  167. data/lib/starter_web/_data/layouts/news_panel_posts.yml +1 -0
  168. data/lib/starter_web/_data/layouts/page.yml +2 -1
  169. data/lib/starter_web/_data/layouts/post.yml +1 -0
  170. data/lib/starter_web/_data/layouts/raw.yml +1 -0
  171. data/lib/starter_web/_data/modules/advertising.yml +209 -58
  172. data/lib/starter_web/_data/modules/analytics.yml +2 -2
  173. data/lib/starter_web/_data/modules/attics.yml +4 -7
  174. data/lib/starter_web/_data/modules/defaults/advertising.yml +3 -2
  175. data/lib/starter_web/_data/modules/defaults/attics.yml +3 -3
  176. data/lib/starter_web/_data/modules/defaults/iconPicker.yml +42 -0
  177. data/lib/starter_web/_data/modules/defaults/navigator.yml +15 -13
  178. data/lib/starter_web/_data/modules/defaults/theme_toggler.yml +42 -0
  179. data/lib/starter_web/_data/modules/iconPicker.yml +64 -0
  180. data/lib/starter_web/_data/modules/masonry.yml +3 -3
  181. data/lib/starter_web/_data/modules/masterslider.yml +5 -5
  182. data/lib/starter_web/_data/modules/navigator_menu.yml +311 -160
  183. data/lib/starter_web/_data/modules/scroller.yml +8 -8
  184. data/lib/starter_web/_data/modules/slick.yml +47 -86
  185. data/lib/starter_web/_data/modules/theme_toggler.yml +29 -0
  186. data/lib/starter_web/_data/modules/themer.yml +0 -6
  187. data/lib/starter_web/_data/resources.yml +54 -53
  188. data/lib/starter_web/_data/templates/feed.xml +1 -1
  189. data/lib/starter_web/_includes/attributes.0.asciidoc +626 -0
  190. data/lib/starter_web/_includes/attributes.asciidoc +81 -72
  191. data/lib/starter_web/_includes/google/static/google_ad_5128488466.html +19 -0
  192. data/lib/starter_web/_includes/google/static/google_ad_7284712660.html +19 -0
  193. data/lib/starter_web/_includes/google/templates/google_ads.html +55 -0
  194. data/lib/starter_web/_plugins/asciidoctor/google-ad-block.rb +47 -0
  195. data/lib/starter_web/_plugins/index/lunr.rb +1 -1
  196. data/lib/starter_web/assets/images/badges/configBinder.jpg +0 -0
  197. data/lib/starter_web/assets/images/badges/docsBinder.jpg +0 -0
  198. data/lib/starter_web/assets/images/badges/notebookBinder.jpg +0 -0
  199. data/lib/starter_web/assets/images/badges/scaleable/configBinder.svg +1 -1
  200. data/lib/starter_web/assets/images/badges/scaleable/docsBinder.svg +1 -1
  201. data/lib/starter_web/assets/images/badges/scaleable/myBinder.svg +1 -1
  202. data/lib/starter_web/assets/images/badges/scaleable/notebookBinder.svg +1 -1
  203. data/lib/starter_web/assets/images/icons/hyvor-talk/jpg/hyvor-logo.512x512.jpg +0 -0
  204. data/lib/starter_web/assets/images/icons/hyvor-talk/png/hyvor-logo.24x24.jpg +0 -0
  205. data/lib/starter_web/assets/images/icons/hyvor-talk/scalable/hyvor-logo.svg +1 -1
  206. data/lib/starter_web/assets/images/icons/j1/jpg/j1-256x256.jpg +0 -0
  207. data/lib/starter_web/assets/images/icons/j1/jpg/j1-512x512.jpg +0 -0
  208. data/lib/starter_web/assets/images/icons/j1/jpg/j1-64x64.jpg +0 -0
  209. data/lib/starter_web/assets/images/icons/j1/png/j1-256x256.png +0 -0
  210. data/lib/starter_web/assets/images/icons/j1/png/j1-512x512.jpg +0 -0
  211. data/lib/starter_web/assets/images/icons/j1/png/j1-512x512.jpg.png +0 -0
  212. data/lib/starter_web/assets/images/icons/j1/png/j1-512x512.png +0 -0
  213. data/lib/starter_web/assets/images/icons/j1/png/j1-64x64.png +0 -0
  214. data/lib/starter_web/assets/images/icons/j1/scalable/j1.svg +1 -1
  215. data/lib/starter_web/assets/images/icons/mdi/mdi.svg +1 -0
  216. data/lib/starter_web/assets/images/icons/mdi/mdil.svg +1 -0
  217. data/lib/starter_web/assets/images/modules/attics/1920x1280/alexander-redl.jpg +0 -0
  218. data/lib/starter_web/assets/images/modules/attics/1920x1280/alina-grubnyak.jpg +0 -0
  219. data/lib/starter_web/assets/images/modules/attics/1920x1280/andrea-badino.jpg +0 -0
  220. data/lib/starter_web/assets/images/modules/attics/1920x1280/brad-neathery.jpg +0 -0
  221. data/lib/starter_web/assets/images/modules/attics/1920x1280/brigitta-schneiter.jpg +0 -0
  222. data/lib/starter_web/assets/images/modules/attics/1920x1280/bruno-figueiredo.jpg +0 -0
  223. data/lib/starter_web/assets/images/modules/attics/1920x1280/clem-onojeghuo.jpg +0 -0
  224. data/lib/starter_web/assets/images/modules/attics/1920x1280/core_web_vitals_best.png +0 -0
  225. data/lib/starter_web/assets/images/modules/attics/1920x1280/crawford-jolly.jpg +0 -0
  226. data/lib/starter_web/assets/images/modules/attics/1920x1280/eleni-afiontzi.jpg +0 -0
  227. data/lib/starter_web/assets/images/modules/attics/1920x1280/fly-d.jpg +0 -0
  228. data/lib/starter_web/assets/images/modules/attics/1920x1280/guillaume-bolduc.jpg +0 -0
  229. data/lib/starter_web/assets/images/modules/attics/1920x1280/harpal-singh.jpg +0 -0
  230. data/lib/starter_web/assets/images/modules/attics/1920x1280/hayden-mills-2.jpg +0 -0
  231. data/lib/starter_web/assets/images/modules/attics/1920x1280/j1-content-mockup-1.jpg +0 -0
  232. data/lib/starter_web/assets/images/modules/attics/1920x1280/j1-content-mockup-2.jpg +0 -0
  233. data/lib/starter_web/assets/images/modules/attics/1920x1280/j1-content-mockup-3.jpg +0 -0
  234. data/lib/starter_web/assets/images/modules/attics/1920x1280/j1-starter-mockup-1.jpg +0 -0
  235. data/lib/starter_web/assets/images/modules/attics/1920x1280/john-schnobrich-2.jpg +0 -0
  236. data/lib/starter_web/assets/images/modules/attics/1920x1280/josep-martins.jpg +0 -0
  237. data/lib/starter_web/assets/images/modules/attics/1920x1280/josh-liu.jpg +0 -0
  238. data/lib/starter_web/assets/images/modules/attics/1920x1280/kelly-sikkemal.jpg +0 -0
  239. data/lib/starter_web/assets/images/modules/attics/1920x1280/kira-auf-der-heide.jpg +0 -0
  240. data/lib/starter_web/assets/images/modules/attics/1920x1280/kristopher-roller.jpg +0 -0
  241. data/lib/starter_web/assets/images/modules/attics/1920x1280/kristopher-roller.webp +0 -0
  242. data/lib/starter_web/assets/images/modules/attics/1920x1280/matthaeus.jpg +0 -0
  243. data/lib/starter_web/assets/images/modules/attics/1920x1280/melanie-deziel.jpg +0 -0
  244. data/lib/starter_web/assets/images/modules/attics/1920x1280/milad-fakurian.jpg +0 -0
  245. data/lib/starter_web/assets/images/modules/attics/1920x1280/mohammad-rahmani.jpg +0 -0
  246. data/lib/starter_web/assets/images/modules/attics/1920x1280/nasa.jpg +0 -0
  247. data/lib/starter_web/assets/images/modules/attics/1920x1280/quino-al-2.jpg +0 -0
  248. data/lib/starter_web/assets/images/modules/attics/1920x1280/recha-oktaviani.jpg +0 -0
  249. data/lib/starter_web/assets/images/modules/attics/building-blocks-1920x1280.jpg +0 -0
  250. data/lib/starter_web/assets/images/modules/attics/christina-1920x1280.jpg +0 -0
  251. data/lib/starter_web/assets/images/modules/attics/cookies-1920x1200.jpg +0 -0
  252. data/lib/starter_web/assets/images/modules/attics/katie-moum-1920x1280.jpg +0 -0
  253. data/lib/starter_web/assets/images/modules/icons/j1/scalable/j1.svg +1 -1
  254. data/lib/starter_web/assets/images/pages/asciidoc_skeletons/example-pdf-screenshot.jpg +0 -0
  255. data/lib/starter_web/assets/images/pages/core_web_vitals/200-create-a-link-1.jpg +0 -0
  256. data/lib/starter_web/assets/images/pages/core_web_vitals/core_web_vitals_best.jpg +0 -0
  257. data/lib/starter_web/assets/images/pages/core_web_vitals/core_web_vitals_best_full.jpg +0 -0
  258. data/lib/starter_web/assets/images/pages/features/bootswatch-themes-1280x800.jpg +0 -0
  259. data/lib/starter_web/assets/images/pages/features/global-mobile-traffic-1920x1080.jpg +0 -0
  260. data/lib/starter_web/assets/images/pages/features/google-lighthouse-1080x300.jpg +0 -0
  261. data/lib/starter_web/assets/images/pages/features/mobile-navigation-600x800.jpg +0 -0
  262. data/lib/starter_web/assets/images/pages/features/native-speakers-by-language.jpg +0 -0
  263. data/lib/starter_web/assets/images/pages/html_validator/appdevtools-html-validator.jpg +0 -0
  264. data/lib/starter_web/assets/images/pages/html_validator/freeformatter-html-validator.jpg +0 -0
  265. data/lib/starter_web/assets/images/pages/html_validator/w3c-nu-checker.jpg +0 -0
  266. data/lib/starter_web/assets/images/pages/html_validator/w3c-validator.jpg +0 -0
  267. data/lib/starter_web/assets/images/posts/featured/dynamic-web-access.jpg +0 -0
  268. data/lib/starter_web/assets/images/posts/featured/jamstack-generators.jpg +0 -0
  269. data/lib/starter_web/assets/images/posts/featured/jekyll.1200x400.jpg +0 -0
  270. data/lib/starter_web/assets/images/posts/featured/jekyll.jpg +0 -0
  271. data/lib/starter_web/assets/images/posts/featured/static-web-access.jpg +0 -0
  272. data/lib/starter_web/assets/images/promo/home/screenshot.jpg +0 -0
  273. data/lib/starter_web/assets/images/quotes/promo/home/screenshot.jpg +0 -0
  274. data/lib/starter_web/assets/images/quotes/promo/jekyll/jekyll-faq.jpg +0 -0
  275. data/lib/starter_web/assets/images/quotes/promo/jekyll/jekyll-generator.jpg +0 -0
  276. data/lib/starter_web/assets/images/quotes/promo/jekyll/jekyll-generator.png +0 -0
  277. data/lib/starter_web/assets/images/quotes/promo/jekyll/jekyll-og.png +0 -0
  278. data/lib/starter_web/assets/images/quotes/promo/jekyll/scalable/jekyll-faq.psd +0 -0
  279. data/lib/starter_web/collections/_biography/a-life-in-questions.adoc +8 -9
  280. data/lib/starter_web/collections/_biography/becoming.adoc +23 -10
  281. data/lib/starter_web/collections/_biography/born-to-run.adoc +28 -10
  282. data/lib/starter_web/collections/_biography/forty-autumns.adoc +20 -13
  283. data/lib/starter_web/collections/_biography/not-dead-yet.adoc +25 -15
  284. data/lib/starter_web/collections/_biography/princess-diarist-the.adoc +24 -15
  285. data/lib/starter_web/collections/_biography/when-breath-becomes-air.adoc +25 -12
  286. data/lib/starter_web/collections/_fantasy/harry-potter-deathly-hallows.adoc +14 -10
  287. data/lib/starter_web/collections/_fantasy/harry-potter-philosophers-stone.adoc +11 -8
  288. data/lib/starter_web/collections/_fantasy/mistborn-trilogy.adoc +32 -8
  289. data/lib/starter_web/collections/_fantasy/ready-player-one.adoc +17 -14
  290. data/lib/starter_web/collections/_fantasy/sword-of-destiny.adoc +27 -13
  291. data/lib/starter_web/collections/_fantasy/terry-pratchet-diary.adoc +38 -15
  292. data/lib/starter_web/collections/_people/diana-petersen.adoc +2 -0
  293. data/lib/starter_web/collections/_people/larry-parker.adoc +2 -0
  294. data/lib/starter_web/collections/_people/parveen-anand.adoc +2 -0
  295. data/lib/starter_web/collections/_portfolio/branding.adoc +5 -0
  296. data/lib/starter_web/collections/_portfolio/graphic_design.adoc +5 -0
  297. data/lib/starter_web/collections/_portfolio/identity.adoc +5 -0
  298. data/lib/starter_web/collections/_portfolio/illustration.adoc +5 -0
  299. data/lib/starter_web/collections/_portfolio/photography.adoc +5 -0
  300. data/lib/starter_web/collections/_portfolio/web_design.adoc +5 -0
  301. data/lib/starter_web/collections/_romance/{breath-of-snow-and-ashes-a.adoc → breath-of-snow-and-ashes.adoc} +20 -5
  302. data/lib/starter_web/collections/_romance/dressmaker-the.adoc +26 -14
  303. data/lib/starter_web/collections/_romance/fiery-cross-the.adoc +12 -9
  304. data/lib/starter_web/collections/_romance/it-ends-with-us.adoc +14 -11
  305. data/lib/starter_web/collections/_romance/outlander-novel.adoc +48 -25
  306. data/lib/starter_web/collections/_romance/virgins-outlander-short-story.adoc +30 -15
  307. data/lib/starter_web/collections/posts/public/featured/_posts/0000-00-00-welcome-to-j1.adoc.erb +4 -2
  308. data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.adoc +4 -1
  309. data/lib/starter_web/collections/posts/public/featured/_posts/2021-02-01-static-site-generators.adoc +5 -3
  310. data/lib/starter_web/collections/posts/public/featured/_posts/2022-02-01-about-j1.adoc +4 -1
  311. data/lib/starter_web/collections/posts/public/featured/_posts/_includes/attributes.asciidoc +2 -2
  312. data/lib/starter_web/index.html +1 -18
  313. data/lib/starter_web/package.json +3 -3
  314. data/lib/starter_web/pages/public/about/features.adoc +1 -1
  315. data/lib/starter_web/pages/public/about/reporting_issues.adoc +1 -1
  316. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/attributes.asciidoc +1 -1
  317. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/112_getting_started.asciidoc +1 -1
  318. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/200_themes/212_values.asciidoc +4 -4
  319. data/lib/starter_web/pages/public/blog/navigator/index.html +2 -2
  320. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_all_books.adoc +1 -1
  321. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_biography.adoc +1 -1
  322. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_fantasy.adoc +1 -1
  323. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_romance.adoc +1 -1
  324. data/lib/starter_web/pages/public/learn/bookshelf/jekyll_collections.adoc +75 -65
  325. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/attributes.asciidoc +58 -0
  326. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/accordion.asciidoc +34 -0
  327. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/alerts.asciidoc +15 -0
  328. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/badges.asciidoc +9 -0
  329. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/body.asciidoc +14 -0
  330. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/breadcrumbs.asciidoc +14 -0
  331. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/buttons.asciidoc +75 -0
  332. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/cards.asciidoc +22 -0
  333. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/carousel.asciidoc +37 -0
  334. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/close.asciidoc +15 -0
  335. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/code.asciidoc +14 -0
  336. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/color_system.asciidoc +353 -0
  337. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/components.asciidoc +69 -0
  338. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/dropdowns.asciidoc +53 -0
  339. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/figures.asciidoc +5 -0
  340. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/forms.asciidoc +270 -0
  341. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/grid.asciidoc +49 -0
  342. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/links.asciidoc +21 -0
  343. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/list_groups.asciidoc +28 -0
  344. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/modals.asciidoc +43 -0
  345. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/navbar.asciidoc +45 -0
  346. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/navs.asciidoc +28 -0
  347. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/offcanvas.asciidoc +16 -0
  348. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/options.asciidoc +30 -0
  349. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/pagination.asciidoc +40 -0
  350. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/paragraph.asciidoc +5 -0
  351. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/placeholders.asciidoc +5 -0
  352. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/popovers.asciidoc +28 -0
  353. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/position.asciidoc +8 -0
  354. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/progress_bars.asciidoc +12 -0
  355. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/spacing.asciidoc +14 -0
  356. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/spinners.asciidoc +12 -0
  357. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/tables.asciidoc +55 -0
  358. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/thumbnails.asciidoc +9 -0
  359. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/toasts.asciidoc +18 -0
  360. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/tooltips.asciidoc +28 -0
  361. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/typography.asciidoc +115 -0
  362. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/documents/z_index.asciidoc +26 -0
  363. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/tables/_table.asciidoc +9 -0
  364. data/lib/starter_web/pages/public/learn/bs_sass_variables/_includes/tables/accordion.asciidoc +87 -0
  365. data/lib/starter_web/pages/public/learn/bs_sass_variables/bs_sass_variables.adoc +262 -0
  366. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/attributes.asciidoc +59 -0
  367. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/documents/100_chapter.asciidoc +541 -0
  368. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/documents/200_chapter.asciidoc +33 -0
  369. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/build_command_options.asciidoc +72 -0
  370. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/files_and_folders.asciidoc +66 -0
  371. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/global_configuration_options.asciidoc +63 -0
  372. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/global_variables.asciidoc +26 -0
  373. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/page_variables.asciidoc +54 -0
  374. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/serve_command_options.asciidoc +45 -0
  375. data/lib/starter_web/pages/public/learn/core_web_vitals/_includes/tables/site_variables.asciidoc +59 -0
  376. data/lib/starter_web/pages/public/learn/core_web_vitals/core_web_vitals.adoc +442 -0
  377. data/lib/starter_web/pages/public/learn/roundtrip/_includes/attributes.0.asciidoc +112 -0
  378. data/lib/starter_web/pages/public/learn/roundtrip/_includes/attributes.asciidoc +2 -2
  379. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/100_gistblock.asciidoc +3 -4
  380. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/themes_rouge.asciidoc +1 -1
  381. data/lib/starter_web/pages/public/learn/roundtrip/asciidoc_extensions.adoc +2 -2
  382. data/lib/starter_web/pages/public/learn/roundtrip/icon_fonts.adoc +10 -10
  383. data/lib/starter_web/pages/public/learn/roundtrip/present_images.adoc +35 -4
  384. data/lib/starter_web/pages/public/learn/roundtrip/responsive_tables.adoc +3 -3
  385. data/lib/starter_web/pages/public/learn/where_to_go.adoc +41 -49
  386. data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +2 -2
  387. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +2 -2
  388. data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +2 -2
  389. data/lib/starter_web/pages/public/tools/cheatsheet/gem.adoc +255 -0
  390. data/lib/starter_web/pages/public/tools/cheatsheet/git.adoc +1458 -0
  391. data/lib/starter_web/pages/public/tools/cheatsheet/j1.adoc +63 -0
  392. data/lib/starter_web/pages/public/tools/cheatsheet/yaml.adoc +514 -0
  393. data/lib/starter_web/pages/public/{previewer → tools/previewer}/preview_bootstrap_theme.adoc +94 -5
  394. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  395. data/lib/starter_web/utilsrv/package.json +1 -1
  396. metadata +169 -60
  397. data/_includes/themes/j1/modules/ads/google_ad_content_home.html +0 -11
  398. data/_includes/themes/j1/modules/ads/google_ad_top_home.html +0 -11
  399. data/assets/themes/j1/core/css/nbinteract-tutorial/styles.css +0 -1711
  400. data/assets/themes/j1/core/css/nbinteract-tutorial/styles.min.css +0 -1
  401. data/assets/themes/j1/modules/advertising/js/google/adInitializer.js +0 -127
  402. data/assets/themes/j1/modules/deeplAPI/js/deeplAPI.2.js +0 -460
  403. data/assets/themes/j1/modules/mdiPreviewer/css/previewer.css +0 -97
  404. data/assets/themes/j1/modules/mdiPreviewer/css/previewer.min.css +0 -15
  405. data/assets/themes/j1/modules/mdiPreviewer/js/previewer.js +0 -115
  406. data/assets/themes/j1/modules/mdiPreviewer/js/previewer.min.js +0 -15
  407. data/assets/themes/j1/modules/mdilPreviewer/css/previewer.css +0 -97
  408. data/assets/themes/j1/modules/mdilPreviewer/css/previewer.min.css +0 -15
  409. data/assets/themes/j1/modules/mdilPreviewer/js/previewer.js +0 -125
  410. data/assets/themes/j1/modules/mdilPreviewer/js/previewer.min.js +0 -15
  411. data/lib/starter_web/_includes/themes/j1/modules/ads/google_ad_content_home.html +0 -11
  412. data/lib/starter_web/_includes/themes/j1/modules/ads/google_ad_top_home.html +0 -11
  413. data/lib/starter_web/assets/images/icons/j1/j1-256x256.gif +0 -0
  414. data/lib/starter_web/assets/images/pages/asciidoc_skeletons/example-pdf-screenshot.png +0 -0
  415. data/lib/starter_web/assets/images/pages/features/bootswatch-themes-1280x800.png +0 -0
  416. data/lib/starter_web/assets/images/pages/features/global-mobile-traffic-1920x1080.png +0 -0
  417. data/lib/starter_web/assets/images/pages/features/google-lighthouse-1080x300.png +0 -0
  418. data/lib/starter_web/assets/images/pages/features/mobile-navigation-600x800.png +0 -0
  419. data/lib/starter_web/assets/images/pages/features/native-speakers-by-language.png +0 -0
  420. data/lib/starter_web/assets/images/pages/nbinteract/binderhub-architecture.jpg +0 -0
  421. data/lib/starter_web/assets/images/pages/nbinteract/jupyterlab-architecture.jpg +0 -0
  422. data/lib/starter_web/assets/images/pages/nbinteract/mandelbrot-menge-1920x1200.jpg +0 -0
  423. data/lib/starter_web/assets/images/pages/nbinteract/mandelbrot-menge.png +0 -0
  424. data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi-textbook-example.jpg +0 -0
  425. data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_bar.jpg +0 -0
  426. data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_hist.jpg +0 -0
  427. data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_line.jpg +0 -0
  428. data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_multiple_choice.jpg +0 -0
  429. data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_scatter.jpg +0 -0
  430. data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_scatter_drag.jpg +0 -0
  431. data/lib/starter_web/assets/images/pages/nbinteract/manual/nbi_short_answer.jpg +0 -0
  432. data/lib/starter_web/assets/images/pages/nbinteract/nbi-textbook-example.jpg +0 -0
  433. data/lib/starter_web/assets/images/posts/featured/dynamic-web-access.png +0 -0
  434. data/lib/starter_web/assets/images/posts/featured/jamstack-generators.png +0 -0
  435. data/lib/starter_web/assets/images/posts/featured/jekyll.1200x400.png +0 -0
  436. data/lib/starter_web/assets/images/posts/featured/jekyll.png +0 -0
  437. data/lib/starter_web/assets/images/posts/featured/post-1.jpg +0 -0
  438. data/lib/starter_web/assets/images/posts/featured/post-2.jpg +0 -0
  439. data/lib/starter_web/assets/images/posts/featured/post-3.jpg +0 -0
  440. data/lib/starter_web/assets/images/posts/featured/post-4.jpg +0 -0
  441. data/lib/starter_web/assets/images/posts/featured/post-5.jpg +0 -0
  442. data/lib/starter_web/assets/images/posts/featured/static-web-access.png +0 -0
  443. data/lib/starter_web/collections/posts/public/series/_posts/2022-08-01-organize-your-life.adoc +0 -118
  444. data/lib/starter_web/collections/posts/public/series/_posts/2022-08-02-organize-your-life.adoc +0 -118
  445. data/lib/starter_web/collections/posts/public/series/_posts/2022-08-03-organize-your-life.adoc +0 -118
  446. data/lib/starter_web/collections/posts/public/series/_posts/2022-09-01-organize-your-life.adoc +0 -117
  447. data/lib/starter_web/collections/posts/public/series/_posts/2022-09-02-organize-your-life.adoc +0 -117
  448. /data/lib/starter_web/assets/images/badges/{configBinder.png → png/configBinder.png} +0 -0
  449. /data/lib/starter_web/assets/images/badges/{docsBinder.png → png/docsBinder.png} +0 -0
  450. /data/lib/starter_web/assets/images/badges/{notebookBinder.png → png/notebookBinder.png} +0 -0
  451. /data/lib/starter_web/assets/images/icons/hyvor-talk/{hyvor-logo.24x24.png → png/hyvor-logo.24x24.png} +0 -0
  452. /data/lib/starter_web/assets/images/icons/hyvor-talk/{hyvor-logo.512x512.png → png/hyvor-logo.512x512.png} +0 -0
@@ -6,7 +6,7 @@ regenerate: true
6
6
 
7
7
  {% comment %}
8
8
  # -----------------------------------------------------------------------------
9
- # ~/assets/themes/j1/adapter/js/advertising.js
9
+ # ~/assets/theFdames/j1/adapter/js/advertising.js
10
10
  # Liquid template to adapt advertising plugin
11
11
  #
12
12
  # Product/Info:
@@ -39,14 +39,14 @@ regenerate: true
39
39
  {% assign blocks = site.data.blocks %}
40
40
  {% assign modules = site.data.modules %}
41
41
 
42
- {% comment %} Set config data (settings only)
42
+ {% comment %} Set config data
43
43
  -------------------------------------------------------------------------------- {% endcomment %}
44
44
  {% assign cookie_defaults = modules.defaults.cookies.defaults %}
45
45
  {% assign cookie_settings = modules.cookies.settings %}
46
46
  {% assign advertising_defaults = modules.defaults.advertising.defaults %}
47
47
  {% assign advertising_settings = modules.advertising.settings %}
48
48
 
49
- {% comment %} Set config options (settings only)
49
+ {% comment %} Set config options
50
50
  -------------------------------------------------------------------------------- {% endcomment %}
51
51
  {% assign cookie_options = cookie_defaults | merge: cookie_settings %}
52
52
  {% assign advertising_options = advertising_defaults | merge: advertising_settings %}
@@ -55,6 +55,7 @@ regenerate: true
55
55
  -------------------------------------------------------------------------------- {% endcomment %}
56
56
  {% assign advertising = advertising_options.enabled %}
57
57
  {% assign advertising_provider = advertising_options.provider %}
58
+ {% assign layout = page.layout %}
58
59
 
59
60
  {% comment %} Detect prod mode
60
61
  -------------------------------------------------------------------------------- {% endcomment %}
@@ -90,14 +91,21 @@ j1.adapter.advertising = (function (j1, window) {
90
91
 
91
92
  {% comment %} Set global variables
92
93
  -------------------------------------------------------------------------------- {% endcomment %}
93
- var environment = '{{environment}}';
94
- var date = new Date();
95
- var timestamp_now = date.toISOString();
96
- var gadScript = document.createElement('script');
97
- var adInitializerScript = document.createElement('script');
94
+ var environment = '{{environment}}';
95
+ var production = (environment.includes('prod') ? true : false);
96
+ var development = (environment.includes('dev') ? true : false);
97
+ var date = new Date();
98
+ var timestamp_now = date.toISOString();
99
+ var gasScript = document.createElement('script');
100
+ var gasDiv = document.createElement('div');
101
+ var gasIns = document.createElement('ins');
102
+ var adInitializerScript = document.createElement('script');
103
+ var advertisingProvider = 'Google Adsense';
104
+ var layout;
98
105
  var advertisingDefaults;
99
- var aadvertisingSettings;
106
+ var advertisingSettings;
100
107
  var advertisingOptions;
108
+ var frontmatterOptions;
101
109
  var autoHideOnUnfilled;
102
110
  var addBorderOnUnfilled;
103
111
  var checkTrackingProtection;
@@ -109,9 +117,8 @@ var baseUrl;
109
117
  var hostname;
110
118
  var cookie_names;
111
119
  var user_consent;
112
- var advertisingProvider;
113
- var providerID;
114
- var validProviderID;
120
+ var publisherID;
121
+ var validpublisherID;
115
122
  var _this;
116
123
  var logger;
117
124
  var logText;
@@ -127,20 +134,6 @@ var logText;
127
134
  // -------------------------------------------------------------------------
128
135
  init: function (options) {
129
136
 
130
- {% if advertising %}
131
- // [INFO ] [j1.adapter.advertising ] [ detected advertising provider (j1_config): {{advertising_provider}}} ]
132
- // [INFO ] [j1.adapter.advertising ] [ start processing load region head, layout: {{page.layout}} ]
133
-
134
- // Load module DEFAULTS|CONFIG
135
- advertisingDefaults = $.extend({}, {{analytics_defaults | replace: 'nil', 'null' | replace: '=>', ':' }});
136
- aadvertisingSettings = $.extend({}, {{analytics_settings | replace: 'nil', 'null' | replace: '=>', ':' }});
137
- advertisingOptions = $.extend(true, {}, advertisingDefaults, aadvertisingSettings);
138
-
139
- autoHideOnUnfilled = analyticsOptions.google.autoHideOnUnfilled;
140
- addBorderOnUnfilled = analyticsOptions.google.addBorderOnUnfilled;
141
- checkTrackingProtection = analyticsOptions.google.checkTrackingProtection;
142
- showErrorPageOnBlocked = analyticsOptions.google.showErrorPageOnBlocked;
143
-
144
137
  // -----------------------------------------------------------------------
145
138
  // Default module settings
146
139
  // -----------------------------------------------------------------------
@@ -152,107 +145,177 @@ var logText;
152
145
  // -----------------------------------------------------------------------
153
146
  // Global variable settings
154
147
  // -----------------------------------------------------------------------
148
+ logger = log4javascript.getLogger('j1.adapter.advertising');
149
+ _this = j1.adapter.advertising;
155
150
  cookie_names = j1.getCookieNames();
156
151
  user_consent = j1.readCookie(cookie_names.user_consent);
157
152
  url = new liteURL(window.location.href);
158
153
  hostname = url.hostname;
159
154
 
160
- {% case advertising_provider %}
161
- {% when "google" %}
162
- // [INFO ] [j1.adapter.advertising ] [ place provider: Google Adsense ]
155
+ // create settings object from frontmatter
156
+ //
157
+ frontmatterOptions = options != null ? $.extend({}, options) : {};
158
+
159
+ // initialze advertisingOptions
160
+ //
161
+ advertisingDefaults = $.extend({}, {{advertising_defaults | replace: 'nil', 'null' | replace: '=>', ':' }});
162
+ advertisingSettings = $.extend({}, {{advertising_settings | replace: 'nil', 'null' | replace: '=>', ':' }});
163
+ advertisingOptions = $.extend(true, {}, advertisingDefaults, advertisingSettings, frontmatterOptions);
164
+ layout = advertisingOptions.layout;
165
+ publisherID = advertisingOptions.google.publisherID;
166
+ validpublisherID = (publisherID.includes('pub-')) ? true : false;
167
+ autoHideOnUnfilled = advertisingOptions.google.autoHideOnUnfilled;
168
+ addBorderOnUnfilled = advertisingOptions.google.addBorderOnUnfilled;
169
+ checkTrackingProtection = advertisingOptions.google.checkTrackingProtection;
170
+ showErrorPageOnBlocked = advertisingOptions.google.showErrorPageOnBlocked;
171
+
172
+ // run initialization on 'contentVisible'
173
+ //
174
+ var dependencies_met_page_ready = setInterval (function (options) {
175
+ var contentState = $('#content').css("display");
176
+ var contentVisible = (contentState == 'block') ? true: false;
163
177
 
164
- _this = j1.adapter.advertising;
165
- logger = log4javascript.getLogger('j1.adapter.advertising.google');
178
+ if (j1.getState() === 'finished' && contentVisible) {
166
179
 
167
- // initialize state flag
168
- _this.setState('started');
169
- logger.debug('\n' + 'state: ' + _this.getState());
170
- logger.info('\n' + 'module is being initialized');
180
+ {% comment %} detect|load code if 'advertising' is 'enabled'
181
+ ------------------------------------------------------------------------ {% endcomment %}
182
+ {% if advertising %}
171
183
 
172
- var dependencies_met_page_ready = setInterval(function() {
173
- if (j1.getState() == 'finished') {
184
+ _this.ad_initializer();
174
185
 
175
- providerID = advertisingOptions.publisherID;
176
- advertisingProvider = 'Google Adsense';
177
- validProviderID = (providerID.includes('your')) ? false : true;
178
- if (!validProviderID) {
179
- logger.warn('\n' + 'invalid publisherID detected for Google Adsense (GAS): ' + providerID);
180
- logger.info('\n' + 'skip initialization for provider: ' + advertisingProvider);
186
+ if (!validpublisherID) {
187
+ if (development) {
188
+ logger.warn('\n' + 'invalid publisher id: ' + publisherID);
189
+ logger.info('\n' + 'module disabled' );
190
+ }
181
191
  clearInterval(dependencies_met_page_ready);
182
192
  return false;
183
193
  }
184
194
 
195
+ {% case advertising_provider %}
196
+ {% when "google" %}
197
+ // [INFO ] [j1.adapter.advertising ] [ place provider: Google Adsense ]
198
+
199
+ // initialize state flag
200
+ //
201
+ _this.setState('started');
202
+ if (development) {
203
+ logger.debug('\n' + 'state: ' + _this.getState());
204
+ }
205
+
185
206
  if (user_consent.personalization) {
186
- // place all ads configured for the page
187
- // NOTE: currently NOT implemented/used
188
- // -----------------------------------------------------------------
189
- // _this.place_ads();
190
-
191
- // add gad api dynamically in the head section
192
- // -----------------------------------------------------------------
193
- logger.info('\n' + 'add gas api in section: head');
194
- gadScript.async = true;
195
- gadScript.id = 'gas-api';
196
- gadScript.src = '//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';
197
- gadScript.setAttribute('data-ad-client', 'ca-pub-3885670015316130');
198
- document.head.appendChild(gadScript);
207
+ if (development) {
208
+ logger.info('\n' + 'adsense api is being initialized');
209
+ }
210
+
211
+ if (!validpublisherID) {
212
+ if (development) {
213
+ logger.debug('\n' + 'invalid publisherID detected for Google Adsense: ' + publisherID);
214
+ logger.info('\n' + 'skip initialization for provider: ' + advertisingProvider);
215
+ }
216
+ return false;
217
+ } else {
218
+ if (development) {
219
+ logger.info('\n' + 'use publisherID for Google Adsense: ' + publisherID);
220
+ }
221
+ }
222
+
223
+ // add Google Adsense API dynamically in head section loaded async
224
+ //
225
+ if (development) {
226
+ logger.info('\n' + 'add Google AdsenseAPI in section: head');
227
+ }
228
+
229
+ gasScript.async = true;
230
+ gasScript.id = 'gas-api';
231
+ gasScript.src = '//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js';
232
+ gasScript.setAttribute('data-ad-client', publisherID);
233
+ document.head.appendChild(gasScript);
234
+
235
+ if (development) {
236
+ logger.info('\n' + 'adsense api initialized');
237
+ }
199
238
 
200
239
  // setup monitor for state changes on all ads configured
201
- // ---------------------------------------------------------------
202
- logger.debug('\n' + 'setup monitoring');
203
- _this.monitor_ads();
240
+ //
241
+ setTimeout(function () {
242
+ var ads_found = (document.getElementsByClassName('adsbygoogle').length > 0) ? true : false;
243
+ if (ads_found > 0) {
244
+ if (development) {
245
+ logger.info('\n' + 'setup Google Ad monitoring');
246
+ }
247
+ _this.ad_monitor();
248
+ } else {
249
+ if (development) {
250
+ logger.warn('\n' + 'no initialized Google Ads found in page');
251
+ }
252
+ }
253
+ }, 1000);
204
254
 
205
255
  // run protection check
206
- // -------------------------------------------------------------------
256
+ //
207
257
  if (checkTrackingProtection) {
208
- logger.debug('\n' + 'run checks for tracking protection');
209
- _this.check_tracking_protection();
258
+ if (development) {
259
+ logger.debug('\n' + 'run checks for tracking protection');
260
+ }
210
261
 
262
+ _this.check_tracking_protection();
211
263
  var dependencies_met_tracking_check_ready = setInterval (function (options) {
212
264
  if (typeof tracking_protection !== 'undefined' ) {
213
-
214
265
  var browser_tracking_feature = navigator.DoNotTrack;
215
266
 
216
267
  if (!tracking_protection && !browser_tracking_feature) {
217
- logText = '\n' + 'tracking protection: disabled';
218
- logger.info(logText);
268
+ if (development) {
269
+ logText = '\n' + 'tracking protection: disabled';
270
+ logger.info(logText);
271
+ }
219
272
  } else {
220
- logText = '\n' + 'tracking protection: enabled';
221
- logger.warn(logText);
273
+ if (development) {
274
+ logText = '\n' + 'tracking protection: enabled';
275
+ logger.debug(logText);
276
+ }
222
277
 
223
278
  if (showErrorPageOnBlocked) {
224
- logger.error('\n' + 'redirect to error page (blocked content): HTML-447');
279
+ if (development) {
280
+ logger.error('\n' + 'redirect to error page (blocked content): HTML-447');
281
+ }
225
282
  // redirect to error page: blocked content
226
283
  window.location.href = '/447.html';
227
284
  }
228
285
  }
229
286
  }
287
+
230
288
  clearInterval(dependencies_met_tracking_check_ready);
231
- }, 25);
289
+ }, 10);
232
290
  } else {
233
- // setup monitor for state changes on all ads configured
234
- // ---------------------------------------------------------------
235
- logger.info('\n' + 'setup monitoring');
236
- _this.monitor_ads();
237
-
291
+ // no protection check enabled
238
292
  _this.setState('finished');
239
- logger.debug('\n' + 'state: ' + _this.getState());
240
- logger.info('\n' + 'module initialized successfully');
293
+
294
+ if (development) {
295
+ logger.debug('\n' + 'state: ' + _this.getState());
296
+ logger.info('\n' + 'module initialized successfully');
297
+ }
298
+
241
299
  clearInterval(dependencies_met_tracking_check_ready);
242
300
  }
243
- clearInterval(dependencies_met_page_ready);
301
+
244
302
  } else {
245
- // manage GAD cookies if no consent is given|rejected
246
- // -----------------------------------------------------------------
247
- var gasCookies = j1.findCookie('__ga');
248
- logger.warn('\n' + 'consent on cookies disabled for personalization');
249
- logger.warn('\n' + 'initialization of module advertising skipped');
250
-
251
- // remove cookies on invalid GAS config or left from a previous
252
- // session/page view if they exists
253
- // ---------------------------------------------------------------------
303
+ // user consent on personalization "false"
304
+ //
305
+ if (production) {
306
+ console.debug('cookies for personalization rejected');
307
+ console.debug('initialization of module advertising skipped');
308
+ } else {
309
+ logger.warn('\n' + 'user consent on personalization: ' + user_consent.personalization);
310
+ logger.warn('\n' + 'initializing module: skipped');
311
+ }
312
+
313
+ // if consent is rejected, detect and remove Adsense cookies
314
+ //
315
+ var gasCookies = j1.findCookie('__g');
254
316
  gasCookies.forEach(function (item) {
255
- // Remove cookies from Google Ads
317
+ // remove Google Ad cookies
318
+ //
256
319
  if (hostname == 'localhost') {
257
320
  j1.removeCookie({ name: item, domain: false, secure: false });
258
321
  } else {
@@ -261,72 +324,221 @@ var logText;
261
324
  });
262
325
 
263
326
  // manage tracking protection
264
- // -----------------------------------------------------------------
327
+ //
265
328
  if (checkTrackingProtection) {
266
329
  if (!user_consent.personalization) {
267
- logText = '\n' + 'consent on cookies disabled for personalization';
268
- logger.warn(logText);
330
+ if (development) {
331
+ logText = '\n' + 'consent on cookies disabled for personalization';
332
+ logger.debug(logText);
333
+ }
269
334
 
270
335
  if (showErrorPageOnBlocked) {
271
- logger.error('\n' + 'redirect to error page (blocked content): HTML-447');
336
+ if (development) {
337
+ logger.error('\n' + 'redirect to error page (blocked content): HTML-447');
338
+ }
272
339
  // redirect to error page: blocked content
273
340
  window.location.href = '/448.html';
274
341
  }
275
342
  }
276
343
  }
277
- clearInterval(dependencies_met_page_ready);
344
+
278
345
  } // END if user_consent.personalization
279
- } // END if getState 'finished'
280
- }, 25);
281
-
282
- {% when "custom" %}
283
- // [INFO ] [j1.adapter.advertising ] [ place provider: Custom Provider ]
284
- {% endcase %}
285
- // [INFO ] [j1.adapter.advertising ] [ end processing ]
286
- {% else %}
287
- var dependencies_met_page_ready = setInterval(function() {
288
- if (j1.getState() == 'finished') {
289
- var ads_found = document.getElementsByClassName('adsbygoogle').length;
290
- logger = log4javascript.getLogger('j1.adapter.advertising.google');
291
- logger.warn('\n' + 'found ads in page: #' + ads_found);
292
- logger.warn('\n' + 'no ads initialized, advertising disabled');
346
+
347
+ {% when "custom" %}
348
+ // [INFO ] [j1.adapter.advertising ] [ place provider: Custom Provider ]
349
+ {% endcase %}
350
+ // [INFO ] [j1.adapter.advertising ] [ end processing ]
351
+ {% else %}
352
+ var ads_found = document.getElementsByClassName('adsbygoogle').length;
353
+ if (development) {
354
+ logger = log4javascript.getLogger('j1.adapter.advertising');
355
+ logger.debug('\n' + 'found ads in page: #' + ads_found);
356
+ logger.debug('\n' + 'no ads initialized, advertising disabled');
357
+ }
358
+ {% endif %} // END if 'advertising'
359
+
293
360
  clearInterval(dependencies_met_page_ready);
294
361
  }
295
- }, 25);
296
- {% endif %}
297
- return;
362
+ }, 10);
298
363
  }, // END init
299
364
 
300
365
  // -------------------------------------------------------------------------
301
- // monitor_ads()
366
+ // ad_initializer()
367
+ // initialze all ad units in a page (ins elements)
368
+ // -------------------------------------------------------------------------
369
+ ad_initializer: function () {
370
+
371
+ var dependencies_met_page_visible = setInterval (function (options) {
372
+ var contentState = $('#content').css("display");
373
+ var contentVisible = (contentState == 'block') ? true: false;
374
+ var ads_found = (document.getElementsByClassName('adsbygoogle').length > 0) ? true : false;
375
+ var ads_initialized = 0;
376
+ var ad_containers;
377
+
378
+ if (j1.getState() === 'finished' && contentVisible && ads_found) {
379
+ if (!validpublisherID) {
380
+ // skip setup processes
381
+ //
382
+ clearInterval(dependencies_met_page_visible);
383
+ return false;
384
+ }
385
+
386
+ // create|loading adverting for containers enabled
387
+ //
388
+ ad_containers = advertisingOptions.google.ads;
389
+ ad_containers.forEach(function (ad) {
390
+ if (user_consent.personalization) {
391
+ var currentDiv = document.getElementById(ad.id);
392
+
393
+ if (ad.enabled && ad.layout == layout) {
394
+ var ins = document.createElement('ins');
395
+
396
+ currentDiv.appendChild(ins);
397
+ var insID = 'ins_' + ad.id;
398
+ ins.setAttribute('id', insID);
399
+ ins.className = "adsbygoogle";
400
+
401
+ document.getElementById(insID).setAttribute('style', ad.styles);
402
+ document.getElementById(insID).setAttribute('data-ad-test', ad.test)
403
+ document.getElementById(insID).setAttribute('data-ad-client', ad.publisherID);
404
+ document.getElementById(insID).setAttribute('data-ad-slot', ad.slot);
405
+ document.getElementById(insID).setAttribute('data-ad-format', ad.ad_format);
406
+
407
+ if (ad.ad_layout == 'display') {
408
+ document.getElementById(insID).setAttribute('data-full-width-responsive', ad.ad_responsive);
409
+ }
410
+
411
+ // if (ad.ad_layout == 'in-article') {
412
+ // document.getElementById(insID).setAttribute('data-ad-format', ad.ad_format);
413
+ // }
414
+
415
+ if (ad.ad_layout == 'multiplex') {
416
+ document.getElementById(insID).setAttribute('data-matched-content-ui-typ', ad.ui_type);
417
+ document.getElementById(insID).setAttribute('data-matched-content-columns-num', ad.ui_columns);
418
+ document.getElementById(insID).setAttribute('data-matched-content-rows-num', ad.ui_rows);
419
+ }
420
+
421
+ ads_initialized ++;
422
+ } else {
423
+ if (ad.layout == layout) {
424
+ if (development) {
425
+ logger.warn('\n' + 'ad disabled on id ' + ad.id + ' for slot: ' + ad.slot);
426
+ }
427
+ }
428
+ }
429
+ } else {
430
+ if (development) {
431
+ logger.warn('\n' + 'skipped add settings on all ad containers');
432
+ }
433
+ } // END if user_consent.personalization
434
+
435
+ });
436
+ // END loading adverting containers
437
+
438
+ if (ads_initialized > 0) {
439
+ if (development) {
440
+ logger.info('\n' + 'ads enabled found in page (total): ' + ads_initialized);
441
+ }
442
+
443
+ var google_ads = document.getElementsByClassName('adsbygoogle');
444
+ var counter = document.getElementsByClassName('adsbygoogle').length;
445
+
446
+ // jadams, 2023-06-22:
447
+ // skip last element in google_ads (adsbygoogle-noablate)
448
+ // TODO: clarify for what reason an 'ins' element with
449
+ // class 'adsbygoogle-noablate' is added by Googgle Adsense
450
+ // Possible reason: publisherID is 'wrong|fake' or NOT 'verified'
451
+ //
452
+ counter--;
453
+
454
+ [].forEach.call(google_ads, function() {
455
+ // skip last element in google_ads (adsbygoogle-noablate)
456
+ if (counter > 0) {
457
+ (adsbygoogle = window.adsbygoogle || []).push({});
458
+ }
459
+ counter --;
460
+ });
461
+ } else {
462
+ if (development) {
463
+ logger.warn('\n' + 'no ads found in page for layout: ' + layout);
464
+ }
465
+ } // END if ads_initialized
466
+
467
+ clearInterval(dependencies_met_page_visible);
468
+ } // END contentVisible|ads_found
469
+
470
+ }, 10); // END dependencies_met_page_visible
471
+
472
+ }, // END ad_initializer
473
+
474
+ // -------------------------------------------------------------------------
475
+ // ad_monitor()
302
476
  // monitor for state changes on the ad placed in pages (if any)
303
477
  //
304
478
  // NOTE: Check visibility state of the adSlot to prevent multiple
305
479
  // processing of the same slot
480
+ //
481
+ // NOTE: Skip ad containers with class 'adsbygoogle-noablate'
482
+ //
306
483
  // -------------------------------------------------------------------------
307
- monitor_ads: function () {
308
- var logger = log4javascript.getLogger('j1.adapter.advertising.monitor.ads');
309
-
484
+ ad_monitor: function () {
310
485
  $('.adsbygoogle').attrchange({
311
486
  trackValues: true,
312
487
  callback: function (event) {
313
- if (event.newValue === 'unfilled') {
314
- var elm = event.target.dataset;
315
- var adSlotIsVisible = $('#' + elm.adSlot ).is(":visible");
316
- if (adSlotIsVisible) {
317
- if (addBorderOnUnfilled) { $('.adsbygoogle').addClass('border--dotted'); }
318
- if (elm.adClient) {
319
- logger.warn('\n' + 'found ad state ' + event.newValue + ' for slot: ' + elm.adSlot);
320
- if (autoHideOnUnfilled) {
321
- logger.warn('\n' + ' hide ad for slot: ' + elm.adSlot);
322
- $('#' + elm.adSlot ).hide();
488
+ var elm = event.target.dataset;
489
+ var elm_classes = event.target.className;
490
+ var validAdContainer = (elm_classes.includes('adsbygoogle-noablate')) ? false : true;
491
+ var environment = '{{environment}}';
492
+ var production = (environment.includes('prod') ? true : false);
493
+ var adSlotIsVisible = $('.adsbygoogle').is(":visible");
494
+
495
+ if (adSlotIsVisible && validAdContainer && event.newValue !== event.oldValue) {
496
+ if (event.newValue === 'unfilled') {
497
+ if (production) {
498
+ console.debug('detected ad blocks in state: unfilled');
499
+ } else {
500
+ logger.warn('\n' + 'detected ad on slot ' + elm.adSlot + ' in state: ' + event.newValue);
501
+ }
502
+ if (addBorderOnUnfilled) {
503
+ $('.adsbygoogle').addClass('border--dotted');
504
+ }
505
+ if (autoHideOnUnfilled) {
506
+ if (development) {
507
+ logger.info('\n' + ' hide ad on slot: ' + elm.adSlot);
323
508
  }
509
+ $('.adsbygoogle').hide();
324
510
  }
325
- }
326
- }
327
- }
328
- });
329
- },
511
+ } else if (event.newValue === 'filled') {
512
+ if (development) {
513
+ logger.info('\n' + 'detected ad on slot ' + elm.adSlot + ' in state: ' + event.newValue);
514
+ }
515
+ } else {
516
+ var filled = (event.newValue.includes('display') ? true : false);
517
+ var unfilled = (event.newValue.includes('dotted') ? true : false);
518
+ if (filled) {
519
+ if (production) {
520
+ console.info('detected ad blocks in state: filled');
521
+ } else {
522
+ logger.info('\n' + 'detected ad block on slot ' + elm.adSlot + ' in state: filled');
523
+ }
524
+ } else if (unfilled) {
525
+ if (production) {
526
+ console.info('detected ad blocks in state: unfilled');
527
+ } else {
528
+ logger.info('\n' + 'detected ad block on slot ' + elm.adSlot + ' in state: unfilled');
529
+ }
530
+ } else {
531
+ if (production) {
532
+ console.warn('unknown ad state detected: ' + event.newValue);
533
+ } else {
534
+ logger.warn('\n' + 'unknown ad state detected on slot ' + elm.adSlot + ' : ' + event.newValue);
535
+ }
536
+ }
537
+ } // END if 'event.newValue'
538
+ } // END if 'adSlotIsVisible'
539
+ } // END 'callback'
540
+ }); // END 'attrchange'
541
+ }, // END ad_monitor
330
542
 
331
543
  // -------------------------------------------------------------------------
332
544
  // check_tracking_protection()
@@ -343,8 +555,10 @@ var logText;
343
555
  check_tracking_protection: function () {
344
556
  var logger = log4javascript.getLogger('j1.adapter.advertising.monitor.tracking');
345
557
 
346
- logText = '\n' + 'check for trackingprotection';
347
- logger.info(logText);
558
+ if (development) {
559
+ logText = '\n' + 'check for trackingprotection';
560
+ logger.info(logText);
561
+ }
348
562
 
349
563
  function checkTrackingProtection() {
350
564
  if (!checkTrackingProtection.promise) {
@@ -365,35 +579,16 @@ var logText;
365
579
  tracking_protection = false;
366
580
  }).catch(e => {
367
581
  tracking_protection = true;
368
- logger.debug('\n' + 'detection details: ' + e);
582
+ if (development) {
583
+ logger.debug('\n' + 'detection details: ' + e);
584
+ }
369
585
  });
370
586
  }
371
587
  }
588
+
372
589
  checkTrackingProtection();
373
590
  }, // END check_tracking_protection
374
591
 
375
- // -------------------------------------------------------------------------
376
- // place_ads()
377
- // place ads configured|enabled
378
- // -------------------------------------------------------------------------
379
- place_ads: function () {
380
-
381
- logText = '\n' + 'ads are being placed';
382
- logger.info(logText);
383
-
384
- // START loadig ads
385
- var dependencies_met_page_ready = setInterval (function (options) {
386
- if (j1.getState() === 'finished') {
387
-
388
- {% comment %} See loop for loading elements with adapter/scroller.js
389
- ---------------------------------------------------------------------- {% endcomment %}
390
- clearInterval(dependencies_met_page_ready);
391
-
392
- }
393
- });
394
- // END place ads
395
- },
396
-
397
592
  // -------------------------------------------------------------------------
398
593
  // messageHandler()
399
594
  // manage messages send from other J1 modules
@@ -401,8 +596,10 @@ var logText;
401
596
  messageHandler: function (sender, message) {
402
597
  var json_message = JSON.stringify(message, undefined, 2);
403
598
 
404
- logText = '\n' + 'received message from ' + sender + ': ' + json_message;
405
- logger.debug(logText);
599
+ if (development) {
600
+ logText = '\n' + 'received message from ' + sender + ': ' + json_message;
601
+ logger.debug(logText);
602
+ }
406
603
 
407
604
  // -----------------------------------------------------------------------
408
605
  // Process commands|actions
@@ -411,7 +608,9 @@ var logText;
411
608
  //
412
609
  // Place handling of command|action here
413
610
  //
414
- logger.info('\n' + message.text);
611
+ if (development) {
612
+ logger.info('\n' + message.text);
613
+ }
415
614
  }
416
615
 
417
616
  //