j1-template 2023.2.7 → 2023.3.1

Sign up to get free protection for your applications and to get access to all the features.
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
  //