j1-template 2020.0.0

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 (921) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +79 -0
  4. data/_includes/themes/j1/blocks/footer/boxes/about_box.proc +46 -0
  5. data/_includes/themes/j1/blocks/footer/boxes/about_box.proc.org +40 -0
  6. data/_includes/themes/j1/blocks/footer/boxes/contacts_box.proc +55 -0
  7. data/_includes/themes/j1/blocks/footer/boxes/issue.proc +38 -0
  8. data/_includes/themes/j1/blocks/footer/boxes/legal_statements.proc +63 -0
  9. data/_includes/themes/j1/blocks/footer/boxes/links_box.proc +50 -0
  10. data/_includes/themes/j1/blocks/footer/boxes/news_box.proc +61 -0
  11. data/_includes/themes/j1/blocks/footer/boxes/social_media_icons.proc +37 -0
  12. data/_includes/themes/j1/blocks/footer/generator.html +145 -0
  13. data/_includes/themes/j1/layouts/content_generator_app.html +32 -0
  14. data/_includes/themes/j1/layouts/content_generator_blog_archive.html +242 -0
  15. data/_includes/themes/j1/layouts/content_generator_collection.html +131 -0
  16. data/_includes/themes/j1/layouts/content_generator_page.html +138 -0
  17. data/_includes/themes/j1/layouts/content_generator_post.html +228 -0
  18. data/_includes/themes/j1/layouts/content_generator_raw.html +33 -0
  19. data/_includes/themes/j1/layouts/layout_metadata_generator.html +118 -0
  20. data/_includes/themes/j1/layouts/layout_module_generator.html +46 -0
  21. data/_includes/themes/j1/layouts/layout_resource_generator.html +49 -0
  22. data/_includes/themes/j1/modules/attics/generator.html +153 -0
  23. data/_includes/themes/j1/modules/boards/news_pin_board.html +183 -0
  24. data/_includes/themes/j1/modules/connectors/ad/custom-provider.html +33 -0
  25. data/_includes/themes/j1/modules/connectors/ad/google-adsense.html +38 -0
  26. data/_includes/themes/j1/modules/connectors/ads +50 -0
  27. data/_includes/themes/j1/modules/connectors/analytic/custom-provider.html +32 -0
  28. data/_includes/themes/j1/modules/connectors/analytic/google-analytics.html +38 -0
  29. data/_includes/themes/j1/modules/connectors/analytics +45 -0
  30. data/_includes/themes/j1/modules/connectors/comment/custom-provider.html +31 -0
  31. data/_includes/themes/j1/modules/connectors/comment/disqus.html +61 -0
  32. data/_includes/themes/j1/modules/connectors/comment/facebook.html +31 -0
  33. data/_includes/themes/j1/modules/connectors/comments +46 -0
  34. data/_includes/themes/j1/modules/connectors/sharing +29 -0
  35. data/_includes/themes/j1/modules/connectors/translator +45 -0
  36. data/_includes/themes/j1/modules/connectors/translators/custom-translator.html +32 -0
  37. data/_includes/themes/j1/modules/connectors/translators/google-translator.html +49 -0
  38. data/_includes/themes/j1/modules/navigator/generator.html +202 -0
  39. data/_includes/themes/j1/modules/navigator/procedures/topsearch.proc +114 -0
  40. data/_includes/themes/j1/modules/search/algolia.html +181 -0
  41. data/_includes/themes/j1/modules/search/docsearch.html +42 -0
  42. data/_includes/themes/j1/procedures/collections/create_collection_article_preview.proc +69 -0
  43. data/_includes/themes/j1/procedures/global/collect_frontmatter_options.proc +60 -0
  44. data/_includes/themes/j1/procedures/global/collect_page_options.proc +66 -0
  45. data/_includes/themes/j1/procedures/global/create_bs_button.proc +129 -0
  46. data/_includes/themes/j1/procedures/global/create_word_cloud.proc +95 -0
  47. data/_includes/themes/j1/procedures/global/get_category.proc +60 -0
  48. data/_includes/themes/j1/procedures/global/get_category_item.proc +80 -0
  49. data/_includes/themes/j1/procedures/global/get_documents_dir.proc +67 -0
  50. data/_includes/themes/j1/procedures/global/get_page_path.proc +69 -0
  51. data/_includes/themes/j1/procedures/global/get_page_url.proc +55 -0
  52. data/_includes/themes/j1/procedures/global/pager.proc +79 -0
  53. data/_includes/themes/j1/procedures/global/select_color.proc +69 -0
  54. data/_includes/themes/j1/procedures/global/select_font_size.proc +86 -0
  55. data/_includes/themes/j1/procedures/global/select_icon_size.proc +82 -0
  56. data/_includes/themes/j1/procedures/global/select_location.proc +119 -0
  57. data/_includes/themes/j1/procedures/global/set_base_vars_folders.proc +37 -0
  58. data/_includes/themes/j1/procedures/global/set_env_entry_document.proc +94 -0
  59. data/_includes/themes/j1/procedures/global/set_image_block.proc +50 -0
  60. data/_includes/themes/j1/procedures/global/setup.proc +53 -0
  61. data/_includes/themes/j1/procedures/layouts/content_writer.proc +112 -0
  62. data/_includes/themes/j1/procedures/layouts/default_writer.proc +162 -0
  63. data/_includes/themes/j1/procedures/layouts/module_writer.proc +270 -0
  64. data/_includes/themes/j1/procedures/layouts/resource_writer.proc +194 -0
  65. data/_includes/themes/j1/procedures/posts/collate_calendar.proc +221 -0
  66. data/_includes/themes/j1/procedures/posts/collate_list.proc +96 -0
  67. data/_includes/themes/j1/procedures/posts/collate_timeline.proc +226 -0
  68. data/_includes/themes/j1/procedures/posts/create_ad_block.proc +56 -0
  69. data/_includes/themes/j1/procedures/posts/create_series_header.proc +96 -0
  70. data/_layouts/app.html +68 -0
  71. data/_layouts/blog_archive.html +60 -0
  72. data/_layouts/collection.html +68 -0
  73. data/_layouts/compress.html +52 -0
  74. data/_layouts/default.html +348 -0
  75. data/_layouts/home.html +90 -0
  76. data/_layouts/page.html +68 -0
  77. data/_layouts/paginator/autopage_category.html +79 -0
  78. data/_layouts/paginator/autopage_collection.html +159 -0
  79. data/_layouts/paginator/autopage_collections_tags.html +87 -0
  80. data/_layouts/paginator/autopage_tags.html +79 -0
  81. data/_layouts/post.html +68 -0
  82. data/_layouts/raw.html +71 -0
  83. data/assets/README.md +0 -0
  84. data/assets/data/authclient.html +373 -0
  85. data/assets/data/banner.html +432 -0
  86. data/assets/data/carousel.json +109 -0
  87. data/assets/data/colors.json +42 -0
  88. data/assets/data/cookie_consent.html +223 -0
  89. data/assets/data/font_sizes.json +42 -0
  90. data/assets/data/footer.html +238 -0
  91. data/assets/data/galleries.json +127 -0
  92. data/assets/data/gallery_customizer.html +150 -0
  93. data/assets/data/jupyter/notebooks/_html/template.full.head.html +75 -0
  94. data/assets/data/jupyter/notebooks/_html/visualisation.html +968 -0
  95. data/assets/data/jupyter/notebooks/html/template.html +50 -0
  96. data/assets/data/jupyter/notebooks/html/visualisation.ok.html +949 -0
  97. data/assets/data/jupyter/notebooks/tutorial.ipynb +169 -0
  98. data/assets/data/jupyter/notebooks/visualisation.ipynb +9413 -0
  99. data/assets/data/mdi_icons.json +14641 -0
  100. data/assets/data/menu.html +469 -0
  101. data/assets/data/messages.yml +131 -0
  102. data/assets/data/panel.html +518 -0
  103. data/assets/data/quicklinks.html +225 -0
  104. data/assets/data/search.yml +131 -0
  105. data/assets/data/sidebar.html +261 -0
  106. data/assets/data/themes.json +59 -0
  107. data/assets/data/twa_v1.json +6978 -0
  108. data/assets/error_pages/HTTP204.html +70 -0
  109. data/assets/error_pages/HTTP400.html +66 -0
  110. data/assets/error_pages/HTTP401.html +67 -0
  111. data/assets/error_pages/HTTP403.html +66 -0
  112. data/assets/error_pages/HTTP404.html +66 -0
  113. data/assets/error_pages/HTTP500.html +66 -0
  114. data/assets/error_pages/HTTP501.html +66 -0
  115. data/assets/error_pages/HTTP502.html +66 -0
  116. data/assets/error_pages/HTTP503.html +67 -0
  117. data/assets/error_pages/HTTP520.html +66 -0
  118. data/assets/error_pages/HTTP521.html +66 -0
  119. data/assets/error_pages/HTTP533.html +66 -0
  120. data/assets/themes/j1/core/css/bootstrap.css +7139 -0
  121. data/assets/themes/j1/core/css/bootstrap.min.css +6 -0
  122. data/assets/themes/j1/core/css/custom.scss +28 -0
  123. data/assets/themes/j1/core/css/globals.css +14523 -0
  124. data/assets/themes/j1/core/css/globals.min.css +1 -0
  125. data/assets/themes/j1/core/css/globals.scss +28 -0
  126. data/assets/themes/j1/core/css/theme_extensions.css +11565 -0
  127. data/assets/themes/j1/core/css/theme_extensions.min.css +1 -0
  128. data/assets/themes/j1/core/css/uno.css +11830 -0
  129. data/assets/themes/j1/core/css/uno.min.css +1 -0
  130. data/assets/themes/j1/core/css/uno.scss +28 -0
  131. data/assets/themes/j1/core/css/vendor.css +46751 -0
  132. data/assets/themes/j1/core/css/vendor.min.css +14 -0
  133. data/assets/themes/j1/core/css/vendor.scss +28 -0
  134. data/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-brands-400.eot +0 -0
  135. data/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-brands-400.svg +3459 -0
  136. data/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-brands-400.ttf +0 -0
  137. data/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-brands-400.woff +0 -0
  138. data/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-brands-400.woff2 +0 -0
  139. data/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-regular-400.eot +0 -0
  140. data/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-regular-400.svg +803 -0
  141. data/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-regular-400.ttf +0 -0
  142. data/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-regular-400.woff +0 -0
  143. data/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-regular-400.woff2 +0 -0
  144. data/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-solid-900.eot +0 -0
  145. data/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-solid-900.svg +4527 -0
  146. data/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-solid-900.ttf +0 -0
  147. data/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-solid-900.woff +0 -0
  148. data/assets/themes/j1/core/fonts/fontawesome_5/fonts/fa-solid-900.woff2 +0 -0
  149. data/assets/themes/j1/core/fonts/fontawesome_5/metadata/icons.json +26790 -0
  150. data/assets/themes/j1/core/fonts/fontawesome_5/metadata/icons.yml +9088 -0
  151. data/assets/themes/j1/core/fonts/fontawesome_5/metadata/shims.json +2302 -0
  152. data/assets/themes/j1/core/fonts/fontawesome_5/metadata/shims.yml +292 -0
  153. data/assets/themes/j1/core/fonts/materialdesign_icons/fonts/materialdesignicons-webfont.eot +0 -0
  154. data/assets/themes/j1/core/fonts/materialdesign_icons/fonts/materialdesignicons-webfont.svg +10188 -0
  155. data/assets/themes/j1/core/fonts/materialdesign_icons/fonts/materialdesignicons-webfont.ttf +0 -0
  156. data/assets/themes/j1/core/fonts/materialdesign_icons/fonts/materialdesignicons-webfont.woff +0 -0
  157. data/assets/themes/j1/core/fonts/materialdesign_icons/fonts/materialdesignicons-webfont.woff2 +0 -0
  158. data/assets/themes/j1/core/fonts/materialdesign_icons/license.md +97 -0
  159. data/assets/themes/j1/core/fonts/materialdesign_icons/metadata/icons.json +8186 -0
  160. data/assets/themes/j1/core/fonts/materialdesign_icons/metadata/icons.yml +5857 -0
  161. data/assets/themes/j1/core/fonts/roboto/fonts/OpenSansEmoji.ttf +0 -0
  162. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Black.ttf +0 -0
  163. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-BlackItalic.ttf +0 -0
  164. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Bold.eot +0 -0
  165. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Bold.ttf +0 -0
  166. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Bold.woff +0 -0
  167. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Bold.woff2 +0 -0
  168. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-BoldItalic.ttf +0 -0
  169. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Italic.ttf +0 -0
  170. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Light.eot +0 -0
  171. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Light.ttf +0 -0
  172. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Light.woff +0 -0
  173. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Light.woff2 +0 -0
  174. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-LightItalic.ttf +0 -0
  175. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Medium.eot +0 -0
  176. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Medium.ttf +0 -0
  177. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Medium.woff +0 -0
  178. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Medium.woff2 +0 -0
  179. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-MediumItalic.ttf +0 -0
  180. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Regular.eot +0 -0
  181. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Regular.ttf +0 -0
  182. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Regular.woff +0 -0
  183. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Regular.woff2 +0 -0
  184. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Thin.eot +0 -0
  185. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Thin.ttf +0 -0
  186. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Thin.woff +0 -0
  187. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-Thin.woff2 +0 -0
  188. data/assets/themes/j1/core/fonts/roboto/fonts/Roboto-ThinItalic.ttf +0 -0
  189. data/assets/themes/j1/core/fonts/roboto/fonts/mplus1mn-bold-ascii.ttf +0 -0
  190. data/assets/themes/j1/core/fonts/roboto/fonts/mplus1mn-bold_italic-ascii.ttf +0 -0
  191. data/assets/themes/j1/core/fonts/roboto/fonts/mplus1mn-italic-ascii.ttf +0 -0
  192. data/assets/themes/j1/core/fonts/roboto/fonts/mplus1mn-regular-ascii-conums.ttf +0 -0
  193. data/assets/themes/j1/core/fonts/roboto/fonts/mplus1p-regular-fallback.ttf +0 -0
  194. data/assets/themes/j1/core/fonts/roboto/fonts/notoserif-bold-subset.ttf +0 -0
  195. data/assets/themes/j1/core/fonts/roboto/fonts/notoserif-bold_italic-subset.ttf +0 -0
  196. data/assets/themes/j1/core/fonts/roboto/fonts/notoserif-italic-subset.ttf +0 -0
  197. data/assets/themes/j1/core/fonts/roboto/fonts/notoserif-regular-subset.ttf +0 -0
  198. data/assets/themes/j1/core/js/template.js +143 -0
  199. data/assets/themes/j1/core/js/template.js.map +1 -0
  200. data/assets/themes/j1/core/js/template.min.js +1 -0
  201. data/exe/j1 +26 -0
  202. data/lib/j1.rb +130 -0
  203. data/lib/j1/command.rb +23 -0
  204. data/lib/j1/commands/generate.rb +154 -0
  205. data/lib/j1/commands/help.rb +32 -0
  206. data/lib/j1/commands/module.rb +69 -0
  207. data/lib/j1/external.rb +59 -0
  208. data/lib/j1/log_adapter.rb +115 -0
  209. data/lib/j1/log_helper.rb +61 -0
  210. data/lib/j1/templates/posts/0000-00-00-welcome-to-j1-template.adoc.erb +72 -0
  211. data/lib/j1/utils.rb +330 -0
  212. data/lib/j1/utils/ansi.rb +59 -0
  213. data/lib/j1/utils/exec.rb +25 -0
  214. data/lib/j1/utils/platforms.rb +80 -0
  215. data/lib/j1/utils/win_tz.rb +73 -0
  216. data/lib/j1/version.rb +3 -0
  217. data/lib/j1_app.rb +105 -0
  218. data/lib/j1_app/j1_auth_manager/auth_manager.rb +1367 -0
  219. data/lib/j1_app/j1_auth_manager/commands.rb +18 -0
  220. data/lib/j1_app/j1_auth_manager/config.rb +238 -0
  221. data/lib/j1_app/j1_auth_manager/error_pages.rb +44 -0
  222. data/lib/j1_app/j1_auth_manager/helpers.rb +166 -0
  223. data/lib/j1_app/j1_auth_manager/helpers_disqus.rb +29 -0
  224. data/lib/j1_app/j1_auth_manager/helpers_facebook.rb +29 -0
  225. data/lib/j1_app/j1_auth_manager/helpers_github.rb +112 -0
  226. data/lib/j1_app/j1_auth_manager/helpers_patreon.rb +29 -0
  227. data/lib/j1_app/j1_auth_manager/helpers_twitter.rb +30 -0
  228. data/lib/j1_app/j1_auth_manager/views/auth_manager_ui.erb +389 -0
  229. data/lib/j1_app/j1_auth_manager/views/auth_manager_ui.erb.kapott +234 -0
  230. data/lib/j1_app/j1_auth_manager/views/auth_manager_ui.new.erb +297 -0
  231. data/lib/j1_app/j1_auth_manager/warden_omniauth.rb +153 -0
  232. data/lib/j1_app/j1_site_manager/static_site.rb +94 -0
  233. data/lib/j1_app/log4r/yamlconfigurator.rb +195 -0
  234. data/lib/j1_app/omniauth/facebook/signed_request.rb +52 -0
  235. data/lib/j1_app/omniauth/strategies/disqus.rb +113 -0
  236. data/lib/j1_app/omniauth/strategies/facebook.rb +212 -0
  237. data/lib/j1_app/omniauth/strategies/github.rb +141 -0
  238. data/lib/j1_app/omniauth/strategies/patreon.rb +129 -0
  239. data/lib/j1_app/omniauth/strategies/twitter.rb +156 -0
  240. data/lib/j1_app/sinatra/extras/cookies.rb +282 -0
  241. data/lib/j1_app/sinatra/extras/index.rb +33 -0
  242. data/lib/starter_web/Gemfile +213 -0
  243. data/lib/starter_web/_config.yml +978 -0
  244. data/lib/starter_web/_data/_defaults/categories.yml +36 -0
  245. data/lib/starter_web/_data/_defaults/colors.yml +612 -0
  246. data/lib/starter_web/_data/_defaults/font_sizes.yml +29 -0
  247. data/lib/starter_web/_data/_defaults/j1_light_gallery.yml +110 -0
  248. data/lib/starter_web/_data/_defaults/resources.yml +942 -0
  249. data/lib/starter_web/_data/_defaults/template_settings.yml +258 -0
  250. data/lib/starter_web/_data/apps/carousel.yml +515 -0
  251. data/lib/starter_web/_data/apps/defaults/carousel.yml +223 -0
  252. data/lib/starter_web/_data/apps/defaults/gallery_customizer.yml +50 -0
  253. data/lib/starter_web/_data/apps/defaults/justified_gallery.yml +72 -0
  254. data/lib/starter_web/_data/apps/defaults/light_gallery.yml +115 -0
  255. data/lib/starter_web/_data/apps/defaults/lightbox.yml +181 -0
  256. data/lib/starter_web/_data/apps/gallery_customizer.yml +47 -0
  257. data/lib/starter_web/_data/apps/justified_gallery.yml +317 -0
  258. data/lib/starter_web/_data/apps/light_gallery.yml +114 -0
  259. data/lib/starter_web/_data/apps/lightbox.yml +181 -0
  260. data/lib/starter_web/_data/blocks/banner.yml +366 -0
  261. data/lib/starter_web/_data/blocks/defaults/banner.yml +253 -0
  262. data/lib/starter_web/_data/blocks/defaults/footer.yml +180 -0
  263. data/lib/starter_web/_data/blocks/defaults/panel.yml +256 -0
  264. data/lib/starter_web/_data/blocks/footer.yml +189 -0
  265. data/lib/starter_web/_data/blocks/panel.yml +348 -0
  266. data/lib/starter_web/_data/builder/blog_navigator.yml +211 -0
  267. data/lib/starter_web/_data/categories.yml +36 -0
  268. data/lib/starter_web/_data/colors.yml +612 -0
  269. data/lib/starter_web/_data/font_sizes.yml +30 -0
  270. data/lib/starter_web/_data/layouts/app.yml +160 -0
  271. data/lib/starter_web/_data/layouts/blog_archive.yml +160 -0
  272. data/lib/starter_web/_data/layouts/collection.yml +187 -0
  273. data/lib/starter_web/_data/layouts/default.yml +232 -0
  274. data/lib/starter_web/_data/layouts/home.yml +270 -0
  275. data/lib/starter_web/_data/layouts/page.yml +186 -0
  276. data/lib/starter_web/_data/layouts/post.yml +187 -0
  277. data/lib/starter_web/_data/layouts/raw.yml +160 -0
  278. data/lib/starter_web/_data/modules/attics.yml +220 -0
  279. data/lib/starter_web/_data/modules/authentication.yml +254 -0
  280. data/lib/starter_web/_data/modules/back2top.yml +40 -0
  281. data/lib/starter_web/_data/modules/cookie_consent.yml +128 -0
  282. data/lib/starter_web/_data/modules/cookiebar.yml +32 -0
  283. data/lib/starter_web/_data/modules/defaults/attics.yml +220 -0
  284. data/lib/starter_web/_data/modules/defaults/authentication.yml +263 -0
  285. data/lib/starter_web/_data/modules/defaults/back2top.yml +147 -0
  286. data/lib/starter_web/_data/modules/defaults/cookie_consent.yml +69 -0
  287. data/lib/starter_web/_data/modules/defaults/cookiebar.yml +79 -0
  288. data/lib/starter_web/_data/modules/defaults/framer.yml +274 -0
  289. data/lib/starter_web/_data/modules/defaults/jekyll_search.yml +149 -0
  290. data/lib/starter_web/_data/modules/defaults/log4javascript.yml +131 -0
  291. data/lib/starter_web/_data/modules/defaults/log4r.yml +171 -0
  292. data/lib/starter_web/_data/modules/defaults/navigator.yml +174 -0
  293. data/lib/starter_web/_data/modules/defaults/smooth_scroll.yml +169 -0
  294. data/lib/starter_web/_data/modules/defaults/stickybits.yml +37 -0
  295. data/lib/starter_web/_data/modules/defaults/themer.yml +168 -0
  296. data/lib/starter_web/_data/modules/defaults/toccer.yml +172 -0
  297. data/lib/starter_web/_data/modules/framer.yml +52 -0
  298. data/lib/starter_web/_data/modules/jekyll_search.yml +51 -0
  299. data/lib/starter_web/_data/modules/log4javascript.yml +131 -0
  300. data/lib/starter_web/_data/modules/log4r.yml +171 -0
  301. data/lib/starter_web/_data/modules/navigator.yml +162 -0
  302. data/lib/starter_web/_data/modules/navigator_menu.yml +276 -0
  303. data/lib/starter_web/_data/modules/smooth_scroll.yml +169 -0
  304. data/lib/starter_web/_data/modules/themer.yml +147 -0
  305. data/lib/starter_web/_data/modules/toccer.yml +172 -0
  306. data/lib/starter_web/_data/pages/builder.yml +87 -0
  307. data/lib/starter_web/_data/plugins/defaults/notebooks.yml +61 -0
  308. data/lib/starter_web/_data/plugins/defaults/paginator.yml +92 -0
  309. data/lib/starter_web/_data/plugins/notebooks.yml +70 -0
  310. data/lib/starter_web/_data/plugins/paginator.yml +52 -0
  311. data/lib/starter_web/_data/private.yml +231 -0
  312. data/lib/starter_web/_data/resources.yml +861 -0
  313. data/lib/starter_web/_data/template_settings.yml +294 -0
  314. data/lib/starter_web/_data/utilities/defaults/util_srv.yml +41 -0
  315. data/lib/starter_web/_data/utilities/util_srv.yml +97 -0
  316. data/lib/starter_web/_plugins/asciidoctor-extensions/admonition-block-answer.rb +48 -0
  317. data/lib/starter_web/_plugins/asciidoctor-extensions/admonition-block-question.rb +48 -0
  318. data/lib/starter_web/_plugins/asciidoctor-extensions/callout.rb +9 -0
  319. data/lib/starter_web/_plugins/asciidoctor-extensions/carousel-block.rb +46 -0
  320. data/lib/starter_web/_plugins/asciidoctor-extensions/conum.rb +9 -0
  321. data/lib/starter_web/_plugins/asciidoctor-extensions/fab-icon-inline.rb +33 -0
  322. data/lib/starter_web/_plugins/asciidoctor-extensions/fas-icon-inline.rb +33 -0
  323. data/lib/starter_web/_plugins/asciidoctor-extensions/gallery-block.rb +44 -0
  324. data/lib/starter_web/_plugins/asciidoctor-extensions/gist-block.rb +52 -0
  325. data/lib/starter_web/_plugins/asciidoctor-extensions/iconify-icon-inline.rb +33 -0
  326. data/lib/starter_web/_plugins/asciidoctor-extensions/lightbox-block.rb +85 -0
  327. data/lib/starter_web/_plugins/asciidoctor-extensions/lorem-inline.rb +65 -0
  328. data/lib/starter_web/_plugins/asciidoctor-extensions/mdi-icon-inline.rb +33 -0
  329. data/lib/starter_web/_plugins/asciidoctor-extensions/shout-block.rb +47 -0
  330. data/lib/starter_web/_plugins/asciidoctor-extensions/twitter-emoji-inline.rb +37 -0
  331. data/lib/starter_web/_plugins/debug.rb +63 -0
  332. data/lib/starter_web/_plugins/filters.rb +320 -0
  333. data/lib/starter_web/_plugins/prettify.rb +45 -0
  334. data/lib/starter_web/_plugins/simple_search_filter.rb +33 -0
  335. data/lib/starter_web/_plugins/symlink_watcher.rb +52 -0
  336. data/lib/starter_web/apps/public/cc +1650 -0
  337. data/lib/starter_web/assets/images/collections/blog/featured/jekyll.1200x400.png +0 -0
  338. data/lib/starter_web/assets/images/collections/blog/featured/jekyll.png +0 -0
  339. data/lib/starter_web/assets/images/collections/blog/featured/staticgen.jpg +0 -0
  340. data/lib/starter_web/assets/images/collections/blog/featured/welcome-to-j1-template.jpg +0 -0
  341. data/lib/starter_web/assets/images/collections/blog/featured/what-is-a-baseurl.jpg +0 -0
  342. data/lib/starter_web/assets/images/collections/blog/series/j1_using_docker/j1_docker_banner.1280x500.png +0 -0
  343. data/lib/starter_web/assets/images/collections/blog/series/j1_using_docker/kinematic_alpha.1280x600.png +0 -0
  344. data/lib/starter_web/assets/images/collections/blog/series/j1_using_docker/kinematic_j1.1280x300.png +0 -0
  345. data/lib/starter_web/assets/images/collections/blog/series/j1_using_docker/windows_docker_banner.1280x500.png +0 -0
  346. data/lib/starter_web/assets/images/collections/blog/wikipedia/columbia-river.1200x400.jpg +0 -0
  347. data/lib/starter_web/assets/images/collections/blog/wikipedia/minneapolis.1200x400.jpg +0 -0
  348. data/lib/starter_web/assets/images/collections/blog/wikipedia/narcise-snake-pits.1200x400.jpg +0 -0
  349. data/lib/starter_web/assets/images/modules/attics/aditya-joshi-1920x1280.jpg +0 -0
  350. data/lib/starter_web/assets/images/modules/attics/admin-dashboard-bootstrap-1280x600.png +0 -0
  351. data/lib/starter_web/assets/images/modules/attics/alex-holyoake-1920x1280.jpg +0 -0
  352. data/lib/starter_web/assets/images/modules/attics/anaya-katlego-1920x1280.jpg +0 -0
  353. data/lib/starter_web/assets/images/modules/attics/antonella-lombardi-1920x1280.jpg +0 -0
  354. data/lib/starter_web/assets/images/modules/attics/antonino-visalli-1920x1280.jpg +0 -0
  355. data/lib/starter_web/assets/images/modules/attics/banner/admin-dashboard-bootstrap-1280x800-bw.jpg +0 -0
  356. data/lib/starter_web/assets/images/modules/attics/banner/docker-1280x600-bw.jpg +0 -0
  357. data/lib/starter_web/assets/images/modules/attics/banner/jekyll.1200x600-bw.jpg +0 -0
  358. data/lib/starter_web/assets/images/modules/attics/banner/library-1920x800-bw.jpg +0 -0
  359. data/lib/starter_web/assets/images/modules/attics/banner/signpost-1920x800-bw.jpg +0 -0
  360. data/lib/starter_web/assets/images/modules/attics/banner/water-journal-1280x600.jpg +0 -0
  361. data/lib/starter_web/assets/images/modules/attics/banner/write-1280x600-bw.jpg +0 -0
  362. data/lib/starter_web/assets/images/modules/attics/brandon-mowinkel-1920x1280.jpg +0 -0
  363. data/lib/starter_web/assets/images/modules/attics/building-blocks-1920x1280-bw.jpg +0 -0
  364. data/lib/starter_web/assets/images/modules/attics/cookies-1920x1200-bw.jpg +0 -0
  365. data/lib/starter_web/assets/images/modules/attics/daniel-jensen-1920x1280.jpg +0 -0
  366. data/lib/starter_web/assets/images/modules/attics/giammarco-boscaro-1920x1280.jpg +0 -0
  367. data/lib/starter_web/assets/images/modules/attics/go-up-1920x1280-bw.jpg +0 -0
  368. data/lib/starter_web/assets/images/modules/attics/ian-schneider-1920x1280.jpg +0 -0
  369. data/lib/starter_web/assets/images/modules/attics/ideas-start-here-1920x1280-bw.jpg +0 -0
  370. data/lib/starter_web/assets/images/modules/attics/jason-rosewell-1920x1280.jpg +0 -0
  371. data/lib/starter_web/assets/images/modules/attics/jessica-ruscello-1920x1280.jpg +0 -0
  372. data/lib/starter_web/assets/images/modules/attics/lianhao-1920x1280.jpg +0 -0
  373. data/lib/starter_web/assets/images/modules/attics/library-1920x1280-bw.jpg +0 -0
  374. data/lib/starter_web/assets/images/modules/attics/mae-mu-Vf9gbsLZyf0-unsplash.jpg +0 -0
  375. data/lib/starter_web/assets/images/modules/attics/mae-mue-1920x1280-v.jpg +0 -0
  376. data/lib/starter_web/assets/images/modules/attics/mae-mue-1920x1280.jpg +0 -0
  377. data/lib/starter_web/assets/images/modules/attics/matthaeus-1920x1280.jpg +0 -0
  378. data/lib/starter_web/assets/images/modules/attics/nousnou-iwasaki-1920x1280.jpg +0 -0
  379. data/lib/starter_web/assets/images/modules/attics/premium-1920x1280-bw.jpg +0 -0
  380. data/lib/starter_web/assets/images/modules/attics/robert-v-ruggiero-1920x1280.jpg +0 -0
  381. data/lib/starter_web/assets/images/modules/attics/romain-vignes-1920x1280.jpg +0 -0
  382. data/lib/starter_web/assets/images/modules/attics/runner-1920x1200-bw.jpg +0 -0
  383. data/lib/starter_web/assets/images/modules/attics/spider-web-1920x1200-bw.jpg +0 -0
  384. data/lib/starter_web/assets/images/modules/attics/the-place-1920x1280-bw.jpg +0 -0
  385. data/lib/starter_web/assets/images/modules/attics/welcome-1920x1280-bw.jpg +0 -0
  386. data/lib/starter_web/assets/images/modules/carousel/cats/cat-1.jpg +0 -0
  387. data/lib/starter_web/assets/images/modules/carousel/cats/cat-2.jpg +0 -0
  388. data/lib/starter_web/assets/images/modules/carousel/cats/cat-3.jpg +0 -0
  389. data/lib/starter_web/assets/images/modules/carousel/cats/cat-4.jpg +0 -0
  390. data/lib/starter_web/assets/images/modules/carousel/cats/cat-5.jpg +0 -0
  391. data/lib/starter_web/assets/images/modules/carousel/cats/cat-6.jpg +0 -0
  392. data/lib/starter_web/assets/images/modules/carousel/cats/cat-7.jpg +0 -0
  393. data/lib/starter_web/assets/images/modules/carousel/cats/cat-8.jpg +0 -0
  394. data/lib/starter_web/assets/images/modules/carousel/mega_cities/andreas-brucker_b.jpg +0 -0
  395. data/lib/starter_web/assets/images/modules/carousel/mega_cities/denys-nevozhai-1_b.jpg +0 -0
  396. data/lib/starter_web/assets/images/modules/carousel/mega_cities/denys-nevozhai-2_b.jpg +0 -0
  397. data/lib/starter_web/assets/images/modules/carousel/mega_cities/luca-bravo_b.jpg +0 -0
  398. data/lib/starter_web/assets/images/modules/carousel/mega_cities/thomas-tucker_b.jpg +0 -0
  399. data/lib/starter_web/assets/images/modules/gallery/mega_cities/andreas-brucker_b.jpg +0 -0
  400. data/lib/starter_web/assets/images/modules/gallery/mega_cities/banter-snaps_b.jpg +0 -0
  401. data/lib/starter_web/assets/images/modules/gallery/mega_cities/denys-nevozhai-1_b.jpg +0 -0
  402. data/lib/starter_web/assets/images/modules/gallery/mega_cities/denys-nevozhai-2-bw.jpg +0 -0
  403. data/lib/starter_web/assets/images/modules/gallery/mega_cities/denys-nevozhai-2_b.jpg +0 -0
  404. data/lib/starter_web/assets/images/modules/gallery/mega_cities/emmad-mazhari_b.jpg +0 -0
  405. data/lib/starter_web/assets/images/modules/gallery/mega_cities/ethan-brooke_b.jpg +0 -0
  406. data/lib/starter_web/assets/images/modules/gallery/mega_cities/federico-rizzarelli_b.jpg +0 -0
  407. data/lib/starter_web/assets/images/modules/gallery/mega_cities/gints-gailis_b.jpg +0 -0
  408. data/lib/starter_web/assets/images/modules/gallery/mega_cities/johan-mouchet_b.jpg +0 -0
  409. data/lib/starter_web/assets/images/modules/gallery/mega_cities/luca-bravo_b.jpg +0 -0
  410. data/lib/starter_web/assets/images/modules/gallery/mega_cities/oskars-sylwan_b.jpg +0 -0
  411. data/lib/starter_web/assets/images/modules/gallery/mega_cities/steven-diaz_b.jpg +0 -0
  412. data/lib/starter_web/assets/images/modules/gallery/mega_cities/thomas-tucker-bw.jpg +0 -0
  413. data/lib/starter_web/assets/images/modules/gallery/mega_cities/thomas-tucker_b.jpg +0 -0
  414. data/lib/starter_web/assets/images/modules/icons/algolia/search-by-algolia.png +0 -0
  415. data/lib/starter_web/assets/images/modules/icons/asciidoc/logo-512x512.png +0 -0
  416. data/lib/starter_web/assets/images/modules/icons/bootstrap/bootstrap-solid-32x32.png +0 -0
  417. data/lib/starter_web/assets/images/modules/icons/bootstrap/bs-docs-masthead-pattern.png +0 -0
  418. data/lib/starter_web/assets/images/modules/icons/bootstrap/scalable/bootstrap-outline.svg +20 -0
  419. data/lib/starter_web/assets/images/modules/icons/bootstrap/scalable/bootstrap-punchout.svg +18 -0
  420. data/lib/starter_web/assets/images/modules/icons/bootstrap/scalable/bootstrap-solid.svg +17 -0
  421. data/lib/starter_web/assets/images/modules/icons/components/angular.ui.png +0 -0
  422. data/lib/starter_web/assets/images/modules/icons/components/angularjs.png +0 -0
  423. data/lib/starter_web/assets/images/modules/icons/components/aws.png +0 -0
  424. data/lib/starter_web/assets/images/modules/icons/components/bootstrap.png +0 -0
  425. data/lib/starter_web/assets/images/modules/icons/components/c9.png +0 -0
  426. data/lib/starter_web/assets/images/modules/icons/components/chai.png +0 -0
  427. data/lib/starter_web/assets/images/modules/icons/components/emmet.png +0 -0
  428. data/lib/starter_web/assets/images/modules/icons/components/express.png +0 -0
  429. data/lib/starter_web/assets/images/modules/icons/components/git.png +0 -0
  430. data/lib/starter_web/assets/images/modules/icons/components/github.png +0 -0
  431. data/lib/starter_web/assets/images/modules/icons/components/gulp.png +0 -0
  432. data/lib/starter_web/assets/images/modules/icons/components/heroku.png +0 -0
  433. data/lib/starter_web/assets/images/modules/icons/components/htmlcss-1.png +0 -0
  434. data/lib/starter_web/assets/images/modules/icons/components/htmlcss-2.png +0 -0
  435. data/lib/starter_web/assets/images/modules/icons/components/jasmine.png +0 -0
  436. data/lib/starter_web/assets/images/modules/icons/components/javascript.png +0 -0
  437. data/lib/starter_web/assets/images/modules/icons/components/jquery.png +0 -0
  438. data/lib/starter_web/assets/images/modules/icons/components/kanban.png +0 -0
  439. data/lib/starter_web/assets/images/modules/icons/components/leanux.png +0 -0
  440. data/lib/starter_web/assets/images/modules/icons/components/linkedin.png +0 -0
  441. data/lib/starter_web/assets/images/modules/icons/components/mean.png +0 -0
  442. data/lib/starter_web/assets/images/modules/icons/components/mongodb.png +0 -0
  443. data/lib/starter_web/assets/images/modules/icons/components/node.png +0 -0
  444. data/lib/starter_web/assets/images/modules/icons/components/postgresql.png +0 -0
  445. data/lib/starter_web/assets/images/modules/icons/components/protractor.png +0 -0
  446. data/lib/starter_web/assets/images/modules/icons/components/rails.png +0 -0
  447. data/lib/starter_web/assets/images/modules/icons/components/ruby.png +0 -0
  448. data/lib/starter_web/assets/images/modules/icons/components/sass.png +0 -0
  449. data/lib/starter_web/assets/images/modules/icons/components/scrum.png +0 -0
  450. data/lib/starter_web/assets/images/modules/icons/components/twitter.png +0 -0
  451. data/lib/starter_web/assets/images/modules/icons/d1/d1-256x256.png +0 -0
  452. data/lib/starter_web/assets/images/modules/icons/d1/d1-32x32.ico +0 -0
  453. data/lib/starter_web/assets/images/modules/icons/d1/d1-512x512.png +0 -0
  454. data/lib/starter_web/assets/images/modules/icons/d1/d1-64x64.png +0 -0
  455. data/lib/starter_web/assets/images/modules/icons/d1/d1.ico +0 -0
  456. data/lib/starter_web/assets/images/modules/icons/d1/favicon.ico +0 -0
  457. data/lib/starter_web/assets/images/modules/icons/d1/scalable/d1.svg +2020 -0
  458. data/lib/starter_web/assets/images/modules/icons/j1/favicon.ico +0 -0
  459. data/lib/starter_web/assets/images/modules/icons/j1/j1-256x256.png +0 -0
  460. data/lib/starter_web/assets/images/modules/icons/j1/j1-32x32.ico +0 -0
  461. data/lib/starter_web/assets/images/modules/icons/j1/j1-512x512.png +0 -0
  462. data/lib/starter_web/assets/images/modules/icons/j1/j1-64x64.png +0 -0
  463. data/lib/starter_web/assets/images/modules/icons/j1/j1..ico +0 -0
  464. data/lib/starter_web/assets/images/modules/icons/j1/scalable/j1.svg +2027 -0
  465. data/lib/starter_web/assets/images/modules/icons/netlify/nf-logo.png +0 -0
  466. data/lib/starter_web/assets/images/modules/icons/p1/favicon.ico +0 -0
  467. data/lib/starter_web/assets/images/modules/icons/p1/p1-256x256.png +0 -0
  468. data/lib/starter_web/assets/images/modules/icons/p1/p1-32x32.ico +0 -0
  469. data/lib/starter_web/assets/images/modules/icons/p1/p1-512x512.png +0 -0
  470. data/lib/starter_web/assets/images/modules/icons/p1/p1-64x64.png +0 -0
  471. data/lib/starter_web/assets/images/modules/icons/p1/p1.ico +0 -0
  472. data/lib/starter_web/assets/images/modules/icons/p1/scalable/p1.svg +2020 -0
  473. data/lib/starter_web/assets/images/modules/icons/patreon/favicon-16x16.png +0 -0
  474. data/lib/starter_web/assets/images/modules/icons/patreon/favicon-32x32.png +0 -0
  475. data/lib/starter_web/assets/images/modules/icons/social/amazon.png +0 -0
  476. data/lib/starter_web/assets/images/modules/icons/social/behance.png +0 -0
  477. data/lib/starter_web/assets/images/modules/icons/social/blogger.png +0 -0
  478. data/lib/starter_web/assets/images/modules/icons/social/deviantart.png +0 -0
  479. data/lib/starter_web/assets/images/modules/icons/social/dribbble.png +0 -0
  480. data/lib/starter_web/assets/images/modules/icons/social/dropbox.png +0 -0
  481. data/lib/starter_web/assets/images/modules/icons/social/evernote.png +0 -0
  482. data/lib/starter_web/assets/images/modules/icons/social/facebook.png +0 -0
  483. data/lib/starter_web/assets/images/modules/icons/social/forrst.png +0 -0
  484. data/lib/starter_web/assets/images/modules/icons/social/github.png +0 -0
  485. data/lib/starter_web/assets/images/modules/icons/social/googleplus.png +0 -0
  486. data/lib/starter_web/assets/images/modules/icons/social/instagram.png +0 -0
  487. data/lib/starter_web/assets/images/modules/icons/social/jolicloud.png +0 -0
  488. data/lib/starter_web/assets/images/modules/icons/social/last-fm.png +0 -0
  489. data/lib/starter_web/assets/images/modules/icons/social/linkedin.png +0 -0
  490. data/lib/starter_web/assets/images/modules/icons/social/picasa.png +0 -0
  491. data/lib/starter_web/assets/images/modules/icons/social/pintrest.png +0 -0
  492. data/lib/starter_web/assets/images/modules/icons/social/rss.png +0 -0
  493. data/lib/starter_web/assets/images/modules/icons/social/skype.png +0 -0
  494. data/lib/starter_web/assets/images/modules/icons/social/spotify.png +0 -0
  495. data/lib/starter_web/assets/images/modules/icons/social/stumbleupon.png +0 -0
  496. data/lib/starter_web/assets/images/modules/icons/social/tumblr.png +0 -0
  497. data/lib/starter_web/assets/images/modules/icons/social/twitter.png +0 -0
  498. data/lib/starter_web/assets/images/modules/icons/social/vimeo.png +0 -0
  499. data/lib/starter_web/assets/images/modules/icons/social/vk.png +0 -0
  500. data/lib/starter_web/assets/images/modules/icons/social/wordpress.png +0 -0
  501. data/lib/starter_web/assets/images/modules/icons/social/xing.png +0 -0
  502. data/lib/starter_web/assets/images/modules/icons/social/yahoo.png +0 -0
  503. data/lib/starter_web/assets/images/modules/icons/social/youtube.png +0 -0
  504. data/lib/starter_web/assets/images/modules/lightbox/close.png +0 -0
  505. data/lib/starter_web/assets/images/modules/lightbox/loading.gif +0 -0
  506. data/lib/starter_web/assets/images/modules/lightbox/next.png +0 -0
  507. data/lib/starter_web/assets/images/modules/lightbox/prev.png +0 -0
  508. data/lib/starter_web/assets/images/modules/patterns/1x1.png +0 -0
  509. data/lib/starter_web/assets/images/modules/patterns/gridtile.png +0 -0
  510. data/lib/starter_web/assets/images/pages/j1_webhooks/000_browser_console-1280x600.jpg +0 -0
  511. data/lib/starter_web/assets/images/pages/j1_webhooks/001_smee_channel-1280x400.jpg +0 -0
  512. data/lib/starter_web/assets/images/pages/j1_webhooks/002_gh_repo_settings-1280x800.jpg +0 -0
  513. data/lib/starter_web/assets/images/pages/j1_webhooks/003_gh_webhook_settings-1280x1000.jpg +0 -0
  514. data/lib/starter_web/assets/images/pages/j1_webhooks/004_gh_webhook_settings-post-1280x600.jpg +0 -0
  515. data/lib/starter_web/assets/images/pages/j1_webhooks/005_smee_channel_ping_receive-1280x800.jpg +0 -0
  516. data/lib/starter_web/assets/images/pages/j1_webhooks/006_gh_redeliver_payload-1280x900.jpg +0 -0
  517. data/lib/starter_web/assets/images/pages/j1_webhooks/007_receive_redelivered_payload-1280x800.jpg +0 -0
  518. data/lib/starter_web/assets/images/pages/j1_webhooks/base/000_browser_console.jpg +0 -0
  519. data/lib/starter_web/assets/images/pages/j1_webhooks/base/000_smee_channel.jpg +0 -0
  520. data/lib/starter_web/assets/images/pages/j1_webhooks/base/002_gh_repo-settings.jpg +0 -0
  521. data/lib/starter_web/assets/images/pages/j1_webhooks/base/003_gh_webhook_settings.jpg +0 -0
  522. data/lib/starter_web/assets/images/pages/j1_webhooks/base/004_gh_webhook_settings-post.jpg +0 -0
  523. data/lib/starter_web/assets/images/pages/j1_webhooks/base/005_smee_channel_ping_received.jpg +0 -0
  524. data/lib/starter_web/assets/images/pages/j1_webhooks/base/006_gh_redeliver_payload.jpg +0 -0
  525. data/lib/starter_web/assets/images/pages/j1_webhooks/base/007_receive_redelivered_payload.jpg +0 -0
  526. data/lib/starter_web/assets/images/pages/j1_webhooks/base/webhook_flow.jpg +0 -0
  527. data/lib/starter_web/assets/images/pages/j1_webhooks/flows/webhook_flow-1920x1280.jpg +0 -0
  528. data/lib/starter_web/assets/images/pages/j1_webhooks/scaleable/webhook_flow.svg +432 -0
  529. data/lib/starter_web/assets/images/pages/j1_webhooks/uml/auth_mgmr_signin_request_flow.uxf +632 -0
  530. data/lib/starter_web/assets/images/pages/j1_webhooks/uml/webhook_flow.uxf +648 -0
  531. data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/get-started-1920x1280-bw.jpg +0 -0
  532. data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/intro/130_layout_inheritance.png +0 -0
  533. data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/intro/content_inheritance.png +0 -0
  534. data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/intro/content_inheritance_thumb.png +0 -0
  535. data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/intro/html_layout.png +0 -0
  536. data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/intro/j1-quickstart-windows.png +0 -0
  537. data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/intro/j1-template-theme.jpg +0 -0
  538. data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/intro/j1_layout.png +0 -0
  539. data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/intro/jekyll-minima-theme.png +0 -0
  540. data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/intro/lane_inheritance.png +0 -0
  541. data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/intro/layout_inheritance.png +0 -0
  542. data/lib/starter_web/assets/images/pages/kickstarter/web_in_a_day/preparations/msys_installation.jpg +0 -0
  543. data/lib/starter_web/assets/images/pages/log4j/apache-log4j-logo.png +0 -0
  544. data/lib/starter_web/assets/images/pages/log4r/code-1920x600.jpg +0 -0
  545. data/lib/starter_web/assets/images/pages/log4r/log4r-logo.png +0 -0
  546. data/lib/starter_web/assets/images/pages/log_expert/image_000.png +0 -0
  547. data/lib/starter_web/assets/images/pages/log_expert/image_001.png +0 -0
  548. data/lib/starter_web/assets/images/pages/log_expert/image_002.png +0 -0
  549. data/lib/starter_web/assets/images/pages/log_expert/image_003.png +0 -0
  550. data/lib/starter_web/assets/images/pages/log_expert/image_004.png +0 -0
  551. data/lib/starter_web/assets/images/pages/log_expert/image_005.png +0 -0
  552. data/lib/starter_web/assets/images/pages/log_expert/image_006.png +0 -0
  553. data/lib/starter_web/assets/images/pages/log_expert/image_007.png +0 -0
  554. data/lib/starter_web/assets/images/pages/log_expert/image_008.png +0 -0
  555. data/lib/starter_web/assets/images/pages/log_expert/image_009.png +0 -0
  556. data/lib/starter_web/assets/images/pages/log_expert/image_010.png +0 -0
  557. data/lib/starter_web/assets/images/pages/log_expert/image_011.png +0 -0
  558. data/lib/starter_web/assets/images/pages/log_expert/image_012.png +0 -0
  559. data/lib/starter_web/assets/images/pages/log_expert/image_013.png +0 -0
  560. data/lib/starter_web/assets/images/pages/log_expert/image_014.png +0 -0
  561. data/lib/starter_web/assets/images/pages/log_expert/image_015.png +0 -0
  562. data/lib/starter_web/assets/images/pages/log_expert/image_016.png +0 -0
  563. data/lib/starter_web/assets/images/pages/log_expert/image_017.png +0 -0
  564. data/lib/starter_web/assets/images/pages/log_expert/image_018.png +0 -0
  565. data/lib/starter_web/assets/images/pages/log_expert/image_019.png +0 -0
  566. data/lib/starter_web/assets/images/pages/log_expert/image_020.png +0 -0
  567. data/lib/starter_web/assets/images/pages/log_expert/image_021.png +0 -0
  568. data/lib/starter_web/assets/images/pages/log_expert/image_022.png +0 -0
  569. data/lib/starter_web/assets/images/pages/log_expert/image_023.png +0 -0
  570. data/lib/starter_web/assets/images/pages/log_expert/image_024.png +0 -0
  571. data/lib/starter_web/assets/images/pages/log_expert/image_025.png +0 -0
  572. data/lib/starter_web/assets/images/pages/log_expert/image_026.png +0 -0
  573. data/lib/starter_web/assets/images/pages/log_expert/image_027.png +0 -0
  574. data/lib/starter_web/assets/images/pages/log_expert/image_028.png +0 -0
  575. data/lib/starter_web/assets/images/pages/log_expert/image_029.png +0 -0
  576. data/lib/starter_web/assets/images/pages/log_expert/image_030.png +0 -0
  577. data/lib/starter_web/assets/images/pages/log_expert/image_031.png +0 -0
  578. data/lib/starter_web/assets/images/pages/log_expert/image_032.png +0 -0
  579. data/lib/starter_web/assets/images/pages/log_expert/image_033.png +0 -0
  580. data/lib/starter_web/assets/images/pages/log_expert/image_034.png +0 -0
  581. data/lib/starter_web/assets/images/pages/log_expert/image_035.png +0 -0
  582. data/lib/starter_web/assets/images/pages/log_expert/image_036.png +0 -0
  583. data/lib/starter_web/assets/images/pages/log_expert/image_037.png +0 -0
  584. data/lib/starter_web/assets/images/pages/log_expert/image_038.png +0 -0
  585. data/lib/starter_web/assets/images/pages/log_expert/image_039.png +0 -0
  586. data/lib/starter_web/assets/images/pages/log_expert/image_040.png +0 -0
  587. data/lib/starter_web/assets/images/pages/log_expert/image_041.png +0 -0
  588. data/lib/starter_web/assets/images/pages/log_expert/image_042.png +0 -0
  589. data/lib/starter_web/assets/images/pages/log_expert/image_043.png +0 -0
  590. data/lib/starter_web/assets/images/pages/log_expert/image_044.png +0 -0
  591. data/lib/starter_web/assets/images/pages/log_expert/image_045.png +0 -0
  592. data/lib/starter_web/assets/images/pages/log_expert/image_046.png +0 -0
  593. data/lib/starter_web/assets/images/pages/log_expert/image_047.png +0 -0
  594. data/lib/starter_web/assets/images/pages/log_expert/image_048.png +0 -0
  595. data/lib/starter_web/assets/images/pages/log_expert/image_049.png +0 -0
  596. data/lib/starter_web/assets/images/pages/log_expert/image_050.png +0 -0
  597. data/lib/starter_web/assets/images/pages/log_expert/image_051.png +0 -0
  598. data/lib/starter_web/assets/images/pages/log_expert/image_052.png +0 -0
  599. data/lib/starter_web/assets/images/pages/log_expert/image_053.png +0 -0
  600. data/lib/starter_web/assets/images/pages/log_expert/image_054.png +0 -0
  601. data/lib/starter_web/assets/images/pages/log_expert/image_055.png +0 -0
  602. data/lib/starter_web/assets/images/pages/log_expert/image_056.png +0 -0
  603. data/lib/starter_web/assets/images/pages/log_expert/image_057.png +0 -0
  604. data/lib/starter_web/assets/images/pages/modals/01_frame_modal.jpg +0 -0
  605. data/lib/starter_web/assets/images/pages/modals/02_site_modal.jpg +0 -0
  606. data/lib/starter_web/assets/images/pages/modals/03_central_modal.jpg +0 -0
  607. data/lib/starter_web/assets/images/pages/modals/04_fluid_modal.jpg +0 -0
  608. data/lib/starter_web/assets/images/pages/pen/jquery/jQuery-logo.png +0 -0
  609. data/lib/starter_web/assets/images/pages/pen/jquery/jquery-banner-1280x600.jpg +0 -0
  610. data/lib/starter_web/assets/images/pages/pen/jquery/jquery-banner-1920x800.jpg +0 -0
  611. data/lib/starter_web/assets/images/pages/pen/jquery/src/JQuery-Logo.svg +122 -0
  612. data/lib/starter_web/assets/images/pages/pen/jquery/src/banner.psd +0 -0
  613. data/lib/starter_web/assets/images/pages/previewer/bs-color-palette.png +0 -0
  614. data/lib/starter_web/assets/images/pages/previewer/material-design-color-palette.jpg +0 -0
  615. data/lib/starter_web/assets/images/pages/previewer/material-design-color-palette.png +0 -0
  616. data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/lightbox-image-1.jpg +0 -0
  617. data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/lightbox-image-2.jpg +0 -0
  618. data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/lightbox-image-3.jpg +0 -0
  619. data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/lightbox-thumb-1.jpg +0 -0
  620. data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/lightbox-thumb-2.jpg +0 -0
  621. data/lib/starter_web/assets/images/pages/roundtrip/100_present_images/lightbox-thumb-3.jpg +0 -0
  622. data/lib/starter_web/assets/images/pages/roundtrip/410_bs_modals_extentions/avatar.jpg +0 -0
  623. data/lib/starter_web/assets/images/pages/roundtrip/410_bs_modals_extentions/marc.jpg +0 -0
  624. data/lib/starter_web/assets/images/pages/roundtrip/bootstrap-1920x1000-bw.jpg +0 -0
  625. data/lib/starter_web/assets/images/pages/roundtrip/cards-1920x1280-bw.jpg +0 -0
  626. data/lib/starter_web/assets/images/pages/roundtrip/emojies-1920x1280-bw.jpg +0 -0
  627. data/lib/starter_web/assets/images/pages/roundtrip/icon-fonts-1920x1280-bw.jpg +0 -0
  628. data/lib/starter_web/assets/images/pages/roundtrip/images-1920x1280-bw.jpg +0 -0
  629. data/lib/starter_web/assets/images/pages/roundtrip/puzzle-1920x1280-bw.jpg +0 -0
  630. data/lib/starter_web/assets/images/pages/roundtrip/tables-1920x1280-bw.jpg +0 -0
  631. data/lib/starter_web/assets/images/pages/roundtrip/themes-1920x1280-bw.jpg +0 -0
  632. data/lib/starter_web/assets/images/pages/roundtrip/typography-1920x1280-bw.jpg +0 -0
  633. data/lib/starter_web/assets/images/quotes/default.png +0 -0
  634. data/lib/starter_web/assets/images/quotes/people.png +0 -0
  635. data/lib/starter_web/assets/themes/j1/adapter/js/attic.js +563 -0
  636. data/lib/starter_web/assets/themes/j1/adapter/js/back2top.js +227 -0
  637. data/lib/starter_web/assets/themes/j1/adapter/js/carousel.js +313 -0
  638. data/lib/starter_web/assets/themes/j1/adapter/js/cookie_consent.js +259 -0
  639. data/lib/starter_web/assets/themes/j1/adapter/js/framer.js +208 -0
  640. data/lib/starter_web/assets/themes/j1/adapter/js/gallery_customizer.js +427 -0
  641. data/lib/starter_web/assets/themes/j1/adapter/js/j1.js +2034 -0
  642. data/lib/starter_web/assets/themes/j1/adapter/js/justified_gallery.js +403 -0
  643. data/lib/starter_web/assets/themes/j1/adapter/js/lightbox.js +181 -0
  644. data/lib/starter_web/assets/themes/j1/adapter/js/logger.js +316 -0
  645. data/lib/starter_web/assets/themes/j1/adapter/js/navigator.js +782 -0
  646. data/lib/starter_web/assets/themes/j1/adapter/js/scroller.js +177 -0
  647. data/lib/starter_web/assets/themes/j1/adapter/js/searcher.js +193 -0
  648. data/lib/starter_web/assets/themes/j1/adapter/js/themer.js +357 -0
  649. data/lib/starter_web/assets/themes/j1/adapter/js/toccer.js +353 -0
  650. data/lib/starter_web/assets/themes/j1/extensions/carousel/css/carousel.css +81 -0
  651. data/lib/starter_web/assets/themes/j1/extensions/carousel/css/carousel.min.css +17 -0
  652. data/lib/starter_web/assets/themes/j1/extensions/carousel/css/carousel_transitions.css +184 -0
  653. data/lib/starter_web/assets/themes/j1/extensions/carousel/css/carousel_transitions.min.css +17 -0
  654. data/lib/starter_web/assets/themes/j1/extensions/carousel/css/theme/uno.css +191 -0
  655. data/lib/starter_web/assets/themes/j1/extensions/carousel/css/theme/uno.min.css +16 -0
  656. data/lib/starter_web/assets/themes/j1/extensions/carousel/images/ajax-loader.gif +0 -0
  657. data/lib/starter_web/assets/themes/j1/extensions/carousel/images/grabbing.png +0 -0
  658. data/lib/starter_web/assets/themes/j1/extensions/carousel/images/owl-logo.png +0 -0
  659. data/lib/starter_web/assets/themes/j1/extensions/carousel/images/owl.video.play.png +0 -0
  660. data/lib/starter_web/assets/themes/j1/extensions/carousel/js/carousel.js +1517 -0
  661. data/lib/starter_web/assets/themes/j1/extensions/carousel/js/carousel.min.js +57 -0
  662. data/lib/starter_web/assets/themes/j1/extensions/iconify/js/iconify.min.js +13 -0
  663. data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/examples/frame.absolute.html +86 -0
  664. data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/examples/frame.content.html +58 -0
  665. data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/examples/frame.hover.html +51 -0
  666. data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/examples/frame.nested.html +68 -0
  667. data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/examples/frame.textarea.html +46 -0
  668. data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/examples/frame.tolerance.html +79 -0
  669. data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/examples/index.html +70 -0
  670. data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/examples/two.html +71 -0
  671. data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/js/client/iframeResizer.contentWindow.js +1104 -0
  672. data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/js/client/iframeResizer.contentWindow.map +1 -0
  673. data/lib/starter_web/assets/themes/j1/extensions/iframe_resizer/js/client/iframeResizer.contentWindow.min.js +10 -0
  674. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/LICENSE +22 -0
  675. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/README.md +273 -0
  676. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/_versions/v3.7.0/css/justifiedGallery.css +110 -0
  677. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/_versions/v3.7.0/css/justifiedGallery.min.css +110 -0
  678. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/_versions/v3.7.0/css/theme/uno.css +23 -0
  679. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/_versions/v3.7.0/js/justifiedGallery.3.7.0.js +1229 -0
  680. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/_versions/v3.7.0/js/justifiedGallery.js +1229 -0
  681. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/_versions/v3.7.0/js/justifiedGallery.min.js +8 -0
  682. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/_versions/v3.7.0/less/.csslintrc +20 -0
  683. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/_versions/v3.7.0/less/justifiedGallery.less +113 -0
  684. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/_versions/v4.0.0/css/justifiedGallery.css +110 -0
  685. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/_versions/v4.0.0/css/justifiedGallery.min.css +110 -0
  686. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/_versions/v4.0.0/css/theme/uno.css +23 -0
  687. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/_versions/v4.0.0/js/jquery.justifiedGallery.js +1229 -0
  688. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/_versions/v4.0.0/js/jquery.justifiedGallery.min.js +8 -0
  689. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/css/justifiedGallery.css +110 -0
  690. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/css/justifiedGallery.min.css +110 -0
  691. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/css/theme/uno.css +38 -0
  692. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/css/theme/uno.min.css +38 -0
  693. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/js/justifiedGallery.js +1229 -0
  694. data/lib/starter_web/assets/themes/j1/extensions/justified_gallery/js/justifiedGallery.min.js +8 -0
  695. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/core/lg-fb-comment-box.css +58 -0
  696. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/core/lg-fb-comment-box.min.css +5 -0
  697. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/core/lg-transitions.css +778 -0
  698. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/core/lg-transitions.min.css +5 -0
  699. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/core/lightgallery.css +981 -0
  700. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/core/lightgallery.min.css +5 -0
  701. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/fonts/lg.eot +0 -0
  702. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/fonts/lg.svg +47 -0
  703. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/fonts/lg.ttf +0 -0
  704. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/fonts/lg.woff +0 -0
  705. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/img/loading.gif +0 -0
  706. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/img/video-play.png +0 -0
  707. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/img/vimeo-play.png +0 -0
  708. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/img/youtube-play.png +0 -0
  709. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/icons/animation-w.png +0 -0
  710. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/icons/customize-w.png +0 -0
  711. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/icons/dynamic-w.png +0 -0
  712. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/icons/facebook-icon.svg +10 -0
  713. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/icons/googleplus-icon.svg +30 -0
  714. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/icons/html5-w.png +0 -0
  715. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/icons/linked-in.png +0 -0
  716. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/icons/module-w.png +0 -0
  717. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/icons/play-button.png +0 -0
  718. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/icons/responsive-w.png +0 -0
  719. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/icons/thumb-w.png +0 -0
  720. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/icons/touch-w.png +0 -0
  721. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/icons/twitter-icon.svg +15 -0
  722. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/icons/twitter.png +0 -0
  723. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/icons/video1-w.png +0 -0
  724. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/icons/zoom-w.png +0 -0
  725. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/icons/zoom.png +0 -0
  726. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/uno.css +263 -0
  727. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/css/themes/uno.min.css +17 -0
  728. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/core/lightgallery.js +1362 -0
  729. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/core/lightgallery.min.js +5 -0
  730. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/modules/j1/j1-video.js +402 -0
  731. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/modules/j1/j1-video.min.js +8 -0
  732. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/modules/lg-autoplay.js +206 -0
  733. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/modules/lg-autoplay.min.js +5 -0
  734. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/modules/lg-fullscreen.js +126 -0
  735. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/modules/lg-fullscreen.min.js +5 -0
  736. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/modules/lg-hash.js +101 -0
  737. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/modules/lg-hash.min.js +5 -0
  738. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/modules/lg-pager.js +105 -0
  739. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/modules/lg-pager.min.js +5 -0
  740. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/modules/lg-share.js +107 -0
  741. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/modules/lg-share.min.js +5 -0
  742. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/modules/lg-thumbnail.js +478 -0
  743. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/modules/lg-thumbnail.min.js +5 -0
  744. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/modules/lg-video.js +342 -0
  745. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/modules/lg-video.min.js +5 -0
  746. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/modules/lg-zoom.js +527 -0
  747. data/lib/starter_web/assets/themes/j1/extensions/light_gallery/js/modules/lg-zoom.min.js +5 -0
  748. data/lib/starter_web/assets/themes/j1/extensions/log4javascript/log4javascript.js +5826 -0
  749. data/lib/starter_web/assets/themes/j1/extensions/log4javascript/log4javascript.min.js +266 -0
  750. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/base16.dark/theme.css +78 -0
  751. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/base16.light/theme.css +77 -0
  752. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/base16.monokai.dark/theme.css +78 -0
  753. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/base16.monokai.light/theme.css +77 -0
  754. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/base16.monokai/theme.css +78 -0
  755. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/base16.solarized.dark/theme.css +78 -0
  756. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/base16.solarized.light/theme.css +77 -0
  757. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/base16.solarized/theme.css +77 -0
  758. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/base16/theme.css +77 -0
  759. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/colorful/theme.css +170 -0
  760. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/github/theme.css +209 -0
  761. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/gruvbox.dark/theme.css +84 -0
  762. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/gruvbox.light/theme.css +84 -0
  763. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/gruvbox/theme.css +84 -0
  764. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/igorpro/theme.css +32 -0
  765. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/molokai/theme.css +208 -0
  766. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/monokai.sublime/theme.css +187 -0
  767. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/monokai/theme.css +210 -0
  768. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/pastie/theme.css +146 -0
  769. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/thankful_eyes/theme.css +173 -0
  770. data/lib/starter_web/assets/themes/j1/extensions/rouge/css/tulip/theme.css +164 -0
  771. data/lib/starter_web/assets/themes/j1/extensions/videojs/css/themes/city.css +147 -0
  772. data/lib/starter_web/assets/themes/j1/extensions/videojs/css/themes/city.min.css +6 -0
  773. data/lib/starter_web/assets/themes/j1/extensions/videojs/css/themes/fantasy.css +113 -0
  774. data/lib/starter_web/assets/themes/j1/extensions/videojs/css/themes/fantasy.min.css +6 -0
  775. data/lib/starter_web/assets/themes/j1/extensions/videojs/css/themes/forest.css +165 -0
  776. data/lib/starter_web/assets/themes/j1/extensions/videojs/css/themes/forest.min.css +6 -0
  777. data/lib/starter_web/assets/themes/j1/extensions/videojs/css/themes/sea.css +72 -0
  778. data/lib/starter_web/assets/themes/j1/extensions/videojs/css/themes/sea.min.css +6 -0
  779. data/lib/starter_web/assets/themes/j1/extensions/videojs/css/video-js.css +1663 -0
  780. data/lib/starter_web/assets/themes/j1/extensions/videojs/css/video-js.min.css +1 -0
  781. data/lib/starter_web/assets/themes/j1/extensions/videojs/js/video.js +55690 -0
  782. data/lib/starter_web/assets/themes/j1/extensions/videojs/js/video.min.js +28 -0
  783. data/lib/starter_web/assets/themes/j1/extensions/vimeo/froogaloop/js/froogaloop2.min.js +4 -0
  784. data/lib/starter_web/assets/themes/j1/extensions/vimeo/player/js/player.js +2138 -0
  785. data/lib/starter_web/assets/themes/j1/extensions/vimeo/player/js/player.js.map +1 -0
  786. data/lib/starter_web/assets/themes/j1/extensions/vimeo/player/js/player.min.js +2 -0
  787. data/lib/starter_web/assets/themes/j1/extensions/vimeo/player/js/player.min.js.map +1 -0
  788. data/lib/starter_web/assets/videos/gallery/adriana-lima-poster.jpg +0 -0
  789. data/lib/starter_web/assets/videos/gallery/kick-it-old-school-poster.jpg +0 -0
  790. data/lib/starter_web/assets/videos/gallery/video1-poster.jpg +0 -0
  791. data/lib/starter_web/assets/videos/gallery/video1-thumb.jpg +0 -0
  792. data/lib/starter_web/assets/videos/gallery/video2-poster.jpg +0 -0
  793. data/lib/starter_web/assets/videos/gallery/video2-thumb.jpg +0 -0
  794. data/lib/starter_web/assets/videos/gallery/video_adele-poster.jpg +0 -0
  795. data/lib/starter_web/assets/videos/gallery/video_gaga-poster.jpg +0 -0
  796. data/lib/starter_web/assets/videos/gallery/video_gwen-poster.jpg +0 -0
  797. data/lib/starter_web/assets/videos/gallery/video_michelle-poster.jpg +0 -0
  798. data/lib/starter_web/assets/videos/headers/still/underground-broadway.png +0 -0
  799. data/lib/starter_web/assets/videos/headers/still/victoria-oskolovich-on-vimeo.png +0 -0
  800. data/lib/starter_web/collections/posts/private/readme +0 -0
  801. data/lib/starter_web/collections/posts/protected/readme +0 -0
  802. data/lib/starter_web/collections/posts/public/featured/_posts/0000-00-00-welcome-to-j1-template.adoc.erb +160 -0
  803. data/lib/starter_web/collections/posts/public/featured/_posts/000_includes/attributes.asciidoc +47 -0
  804. data/lib/starter_web/collections/posts/public/featured/_posts/000_includes/unsplash-badge.asciidoc +31 -0
  805. data/lib/starter_web/collections/posts/public/featured/_posts/2019-05-01-top-open-source-static-site-generators.adoc +97 -0
  806. data/lib/starter_web/collections/posts/public/featured/_posts/2019-06-01-about-cookies.adoc +197 -0
  807. data/lib/starter_web/collections/posts/public/jekyll/_posts/2018-05-01-confusion-about-base-url.adoc +105 -0
  808. data/lib/starter_web/collections/posts/public/series/_posts/000_includes/attributes.asciidoc +66 -0
  809. data/lib/starter_web/collections/posts/public/series/_posts/000_includes/documents/100-docker-using-shared-folders.asciidoc +430 -0
  810. data/lib/starter_web/collections/posts/public/series/_posts/000_includes/documents/loop.sh +28 -0
  811. data/lib/starter_web/collections/posts/public/series/_posts/000_includes/tables/debug_variables.asciidoc +48 -0
  812. data/lib/starter_web/collections/posts/public/series/_posts/2018-11-01-docker-using-shared-folders.adoc +504 -0
  813. data/lib/starter_web/collections/posts/public/wikipedia/_posts/000_includes/attributes.asciidoc +46 -0
  814. data/lib/starter_web/collections/posts/public/wikipedia/_posts/000_includes/tables/debug_variables.asciidoc +48 -0
  815. data/lib/starter_web/collections/posts/public/wikipedia/_posts/2016-11-20-minneapolis.adoc +126 -0
  816. data/lib/starter_web/collections/posts/public/wikipedia/_posts/2016-11-24-narcisse-snake-dens.adoc +88 -0
  817. data/lib/starter_web/collections/posts/public/wikipedia/_posts/2016-11-26-columbia-river.adoc +86 -0
  818. data/lib/starter_web/config.ru +24 -0
  819. data/lib/starter_web/dot.gitattributes +31 -0
  820. data/lib/starter_web/dot.gitignore +55 -0
  821. data/lib/starter_web/dot.nojekyll +19 -0
  822. data/lib/starter_web/favicon.ico +0 -0
  823. data/lib/starter_web/index.html +68 -0
  824. data/lib/starter_web/package.json +136 -0
  825. data/lib/starter_web/pages/private/readme +0 -0
  826. data/lib/starter_web/pages/protected/readme +0 -0
  827. data/lib/starter_web/pages/public/about/about_site.adoc +40 -0
  828. data/lib/starter_web/pages/public/about/become_a_patron.adoc +50 -0
  829. data/lib/starter_web/pages/public/blog/navigator/archive.html +111 -0
  830. data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +153 -0
  831. data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +133 -0
  832. data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +187 -0
  833. data/lib/starter_web/pages/public/blog/navigator/index.html +47 -0
  834. data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/000_includes/attributes.asciidoc +174 -0
  835. data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/000_includes/documents/100_meet_and_greet_jekyll.asciidoc +31 -0
  836. data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/000_includes/documents/200_preparations.asciidoc +14 -0
  837. data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/000_includes/documents/300_first_awesome_web.asciidoc +12 -0
  838. data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/000_includes/parts.asciidoc +193 -0
  839. data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/100_meet_and_greet_jekyll.adoc +79 -0
  840. data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/200_preparations.adoc +72 -0
  841. data/lib/starter_web/pages/public/learn/kickstarter/web_in_a_day/300_first_awesome_web.adoc +70 -0
  842. data/lib/starter_web/pages/public/learn/roundtrip/000_bs_tour.1.asciidoc +121 -0
  843. data/lib/starter_web/pages/public/learn/roundtrip/000_bs_tour.adoc +145 -0
  844. data/lib/starter_web/pages/public/learn/roundtrip/000_bs_tour_api.adoc +644 -0
  845. data/lib/starter_web/pages/public/learn/roundtrip/000_includes/attributes.asciidoc +117 -0
  846. data/lib/starter_web/pages/public/learn/roundtrip/000_includes/documents/100_gistblock.asciidoc +27 -0
  847. data/lib/starter_web/pages/public/learn/roundtrip/000_includes/documents/410_bottom_info.asciidoc +11 -0
  848. data/lib/starter_web/pages/public/learn/roundtrip/000_includes/documents/410_bottom_left_warning.asciidoc +11 -0
  849. data/lib/starter_web/pages/public/learn/roundtrip/000_includes/documents/410_bottom_right_danger.asciidoc +11 -0
  850. data/lib/starter_web/pages/public/learn/roundtrip/000_includes/documents/410_central_success.asciidoc +11 -0
  851. data/lib/starter_web/pages/public/learn/roundtrip/000_includes/documents/410_full_height_left_info.asciidoc +11 -0
  852. data/lib/starter_web/pages/public/learn/roundtrip/000_includes/documents/410_full_height_right_success.asciidoc +11 -0
  853. data/lib/starter_web/pages/public/learn/roundtrip/000_includes/documents/410_table_3_column.asciidoc +47 -0
  854. data/lib/starter_web/pages/public/learn/roundtrip/000_includes/documents/410_top_info.asciidoc +11 -0
  855. data/lib/starter_web/pages/public/learn/roundtrip/000_includes/documents/410_top_left_info.asciidoc +11 -0
  856. data/lib/starter_web/pages/public/learn/roundtrip/000_includes/documents/410_top_right_success.asciidoc +11 -0
  857. data/lib/starter_web/pages/public/learn/roundtrip/000_includes/documents/419_advanced_modals_html.asciidoc +928 -0
  858. data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +304 -0
  859. data/lib/starter_web/pages/public/learn/roundtrip/100_present_videos.adoc +152 -0
  860. data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +524 -0
  861. data/lib/starter_web/pages/public/learn/roundtrip/300_icon_fonts.adoc +435 -0
  862. data/lib/starter_web/pages/public/learn/roundtrip/400_asciidoc_extensions.adoc +536 -0
  863. data/lib/starter_web/pages/public/learn/roundtrip/410_bs_modals_extentions.adoc +128 -0
  864. data/lib/starter_web/pages/public/learn/roundtrip/420_responsive_tables_extensions.adoc +281 -0
  865. data/lib/starter_web/pages/public/learn/roundtrip/500_themes.adoc +138 -0
  866. data/lib/starter_web/pages/public/learn/roundtrip/bs_tour.js +98 -0
  867. data/lib/starter_web/pages/public/learn/vtutorials/000_includes/attributes.asciidoc +117 -0
  868. data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/100_gistblock.asciidoc +27 -0
  869. data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_bottom_info.asciidoc +11 -0
  870. data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_bottom_left_warning.asciidoc +11 -0
  871. data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_bottom_right_danger.asciidoc +11 -0
  872. data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_central_success.asciidoc +11 -0
  873. data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_full_height_left_info.asciidoc +11 -0
  874. data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_full_height_right_success.asciidoc +11 -0
  875. data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_table_3_column.asciidoc +47 -0
  876. data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_top_info.asciidoc +11 -0
  877. data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_top_left_info.asciidoc +11 -0
  878. data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/410_top_right_success.asciidoc +11 -0
  879. data/lib/starter_web/pages/public/learn/vtutorials/000_includes/documents/419_advanced_modals_html.asciidoc +928 -0
  880. data/lib/starter_web/pages/public/learn/vtutorials/000_test_youtube_video.adoc +141 -0
  881. data/lib/starter_web/pages/public/learn/vtutorials/100_basic_video.adoc +109 -0
  882. data/lib/starter_web/pages/public/learn/whats_up.adoc +117 -0
  883. data/lib/starter_web/pages/public/legal/de/100_impress.adoc +97 -0
  884. data/lib/starter_web/pages/public/legal/de/200_terms_of_use.adoc +54 -0
  885. data/lib/starter_web/pages/public/legal/de/300_privacy.adoc +300 -0
  886. data/lib/starter_web/pages/public/legal/de/400_license_agreement.adoc +394 -0
  887. data/lib/starter_web/pages/public/legal/de/500_support.adoc +19 -0
  888. data/lib/starter_web/pages/public/legal/en/000_copyright.adoc +89 -0
  889. data/lib/starter_web/pages/public/legal/en/100_impress.adoc +51 -0
  890. data/lib/starter_web/pages/public/legal/en/200_terms_of_use.adoc +48 -0
  891. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +394 -0
  892. data/lib/starter_web/pages/public/legal/en/400_license_agreement.adoc +432 -0
  893. data/lib/starter_web/pages/public/legal/en/500_support.adoc +19 -0
  894. data/lib/starter_web/pages/public/legal/en/eu/cookie.policy.asciidoc +55 -0
  895. data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +158 -0
  896. data/lib/starter_web/pages/public/previewer/000_includes/attributes.asciidoc +116 -0
  897. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/100_absolute_sizes.asciidoc +39 -0
  898. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/110_bs_grid_sizes.asciidoc +47 -0
  899. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/120_relative_sizes.asciidoc +87 -0
  900. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/200_rotate.asciidoc +71 -0
  901. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/300_flip.asciidoc +31 -0
  902. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/400_spin_pulsed.asciidoc +39 -0
  903. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/500_bw_color_palette.asciidoc +61 -0
  904. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/510_bs_color_palette.asciidoc +55 -0
  905. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/600_md_color_palette.asciidoc +95 -0
  906. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/601_md_color_palette_indigo.asciidoc +95 -0
  907. data/lib/starter_web/pages/public/previewer/000_includes/tables/mdi_icons/602_md_color_palette_pink.asciidoc +95 -0
  908. data/lib/starter_web/pages/public/previewer/000_includes/tables/twitter_emoji/100_bs_sizes.asciidoc +47 -0
  909. data/lib/starter_web/pages/public/previewer/000_includes/tables/twitter_emoji/100_relative_sizes.asciidoc +47 -0
  910. data/lib/starter_web/pages/public/previewer/000_includes/tables/twitter_emoji/200_rotate.asciidoc +71 -0
  911. data/lib/starter_web/pages/public/previewer/000_includes/tables/twitter_emoji/300_flip.asciidoc +30 -0
  912. data/lib/starter_web/pages/public/previewer/000_includes/tables/twitter_emoji/400_spin_pulsed.asciidoc +31 -0
  913. data/lib/starter_web/pages/public/previewer/bootstrap_theme.adoc +1858 -0
  914. data/lib/starter_web/pages/public/previewer/iframer.adoc +83 -0
  915. data/lib/starter_web/pages/public/previewer/justified_gallery.html +33 -0
  916. data/lib/starter_web/pages/public/previewer/mdi_icons_preview.adoc +295 -0
  917. data/lib/starter_web/pages/public/previewer/twitter_emoji_preview.adoc +195 -0
  918. data/lib/starter_web/utilsrv/_defaults/package.json +52 -0
  919. data/lib/starter_web/utilsrv/package.json +52 -0
  920. data/lib/starter_web/utilsrv/server.js +601 -0
  921. metadata +1213 -0
@@ -0,0 +1,427 @@
1
+ ---
2
+ regenerate: true
3
+ ---
4
+
5
+ {% capture cache %}
6
+
7
+ {% comment %}
8
+ # -----------------------------------------------------------------------------
9
+ # ~/assets/themes/j1/adapter/js/gallery_customizer.js
10
+ # Liquid template to adapt Gallery Customizer JS functions
11
+ #
12
+ # Product/Info:
13
+ # https://jekyll.one
14
+ #
15
+ # Copyright (C) 2020 Juergen Adams
16
+ #
17
+ # J1 Template is licensed under the MIT License.
18
+ # For details, see https://jekyll.one
19
+ # -----------------------------------------------------------------------------
20
+ # Test data:
21
+ # {{ liquid_var | debug }}
22
+ # -----------------------------------------------------------------------------
23
+ {% endcomment %}
24
+
25
+ {% comment %} Set global settings
26
+ -------------------------------------------------------------------------------- {% endcomment %}
27
+ {% assign data = site.data %}
28
+ {% assign environment = site.environment %}
29
+ {% assign template_name = site.template.name %}
30
+
31
+ {% assign apps = data.apps %}
32
+ {% assign blocks = data.blocks %}
33
+ {% assign builder = data.builder %}
34
+ {% assign layouts = data.layouts %}
35
+ {% assign modules = data.modules %}
36
+ {% assign pages = data.pages %}
37
+ {% assign tables = data.tables %}
38
+
39
+ {% comment %} Liquid procedures
40
+ -------------------------------------------------------------------------------- {% endcomment %}
41
+
42
+ {% comment %} Set global settings
43
+ -------------------------------------------------------------------------------- {% endcomment %}
44
+ {% assign environment = site.environment %}
45
+ {% assign template_version = site.version %}
46
+
47
+ {% comment %} Process YML config data
48
+ ================================================================================ {% endcomment %}
49
+
50
+ {% comment %} Set config files
51
+ -------------------------------------------------------------------------------- {% endcomment %}
52
+ {% assign template_config = site.data.template_settings %}
53
+ {% assign blocks = site.data.blocks %}
54
+ {% assign modules = site.data.modules %}
55
+
56
+ {% comment %} Set config data
57
+ -------------------------------------------------------------------------------- {% endcomment %}
58
+ {% assign jf_gallery_defaults = apps.defaults.justified_gallery.defaults %}
59
+ {% assign jf_gallery_settings = apps.justified_gallery.settings %}
60
+ {% assign gallery_customizer_defaults = site.data.apps.defaults.gallery_customizer.defaults %}
61
+ {% assign gallery_customizer_settings = site.data.apps.gallery_customizer.settings %}
62
+
63
+ {% comment %} Set config options
64
+ -------------------------------------------------------------------------------- {% endcomment %}
65
+ {% assign gallery_options = jf_gallery_defaults | merge: jf_gallery_settings %}
66
+ {% assign customizer_options = gallery_customizer_defaults | merge: gallery_customizer_settings %}
67
+
68
+ {% comment %} Liquid var initialization
69
+ -------------------------------------------------------------------------------- {% endcomment %}
70
+ {% assign customizer_title = customizer_options.title %}
71
+ {% assign gallery_rowHeight = customizer_options.gallery_settings.rowHeight %}
72
+
73
+ /*
74
+ # -----------------------------------------------------------------------------
75
+ # ~/assets/themes/j1/adapter/js/gallery_customizer.js
76
+ # J1 Adapter for Gallery Customizer
77
+ #
78
+ # Product/Info:
79
+ # https://jekyll.one
80
+ #
81
+ # Copyright (C) 2020 Juergen Adams
82
+ #
83
+ # J1 Template is licensed under the MIT License.
84
+ # For details, see https://jekyll.one
85
+ # -----------------------------------------------------------------------------
86
+ # Adapter generated: {{site.time}}
87
+ # -----------------------------------------------------------------------------
88
+ */
89
+ 'use strict';
90
+
91
+ {% comment %} Main
92
+ -------------------------------------------------------------------------------- {% endcomment %}
93
+ j1.adapter['gallery_customizer'] = (function (j1, window) {
94
+
95
+ {% comment %} Set global variables
96
+ ------------------------------------------------------------------------------ {% endcomment %}
97
+ var environment = '{{environment}}';
98
+ var galleryOptions = {};
99
+ var customizerOptions = {};
100
+ var _this;
101
+ var logger;
102
+ var logText;
103
+
104
+ // ---------------------------------------------------------------------------
105
+ // Helper functions
106
+ // ---------------------------------------------------------------------------
107
+ function executeFunctionByName(functionName, context /*, args */) {
108
+ // See: https://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string
109
+ //
110
+ var args = Array.prototype.slice.call(arguments, 2);
111
+ var namespaces = functionName.split(".");
112
+ var func = namespaces.pop();
113
+ for(var i = 0; i < namespaces.length; i++) {
114
+ context = context[namespaces[i]];
115
+ }
116
+ return context[func].apply(context, args);
117
+ }
118
+
119
+ // ---------------------------------------------------------------------------
120
+ // Main object
121
+ // ---------------------------------------------------------------------------
122
+ return {
123
+
124
+ // -------------------------------------------------------------------------
125
+ // initializer
126
+ // -------------------------------------------------------------------------
127
+ init: function (options) {
128
+ // initialize state flag
129
+ j1.adapter.gallery_customizer.state = 'pending';
130
+
131
+ // -----------------------------------------------------------------------
132
+ // Default module settings
133
+ // -----------------------------------------------------------------------
134
+ var settings = $.extend({
135
+ module_name: 'j1.adapter.gallery_customizer',
136
+ generated: '{{site.time}}'
137
+ }, options);
138
+
139
+ {% comment %} Load gallery config from yml data
140
+ -------------------------------------------------------------------------- {% endcomment %}
141
+ galleryOptions = $.extend({}, {{gallery_options | replace: '=>', ':' | replace: 'nil', '""'}});
142
+ customizerOptions = $.extend({}, {{customizer_options | replace: '=>', ':' | replace: 'nil', '""'}});
143
+
144
+ {% comment %} Set global variables
145
+ -------------------------------------------------------------------------- {% endcomment %}
146
+ _this = j1.adapter.gallery_customizer;
147
+ logger = log4javascript.getLogger('j1.adapter.gallery_customizer');
148
+
149
+ _this.setState('started');
150
+ logger.info('state: ' + _this.getState());
151
+ logger.info('module is being initialized');
152
+
153
+ // ---------------------------------------------------------------------
154
+ // data loader
155
+ // ---------------------------------------------------------------------
156
+ $.when (
157
+ j1.xhrData (
158
+ 'j1.adapter.gallery_customizer', {
159
+ xhr_container_id: customizerOptions.xhr_container_id,
160
+ xhr_data_path: customizerOptions.xhr_data_path },
161
+ 'data_loaded'))
162
+ .then (function (success) {
163
+ if (success) {
164
+ logger.info('loading customizer started on id: #' + customizerOptions.xhr_container_id);
165
+
166
+ // -------------------------------------------------------------------
167
+ // initializer
168
+ // -------------------------------------------------------------------
169
+ var dependencies_met_data_loaded = setInterval(function() {
170
+ if (_this.getState() == 'data_loaded') {
171
+ var environment = '{{site.environment}}';
172
+ var galleryId = '#jg_customizer';
173
+ var $formId = $('#jg-customizer-form');
174
+ var $instance = $('#jg_customizer');
175
+ var kbdDelay = 750;
176
+ var imageHeightMin = 40;
177
+
178
+ logger.info('loading customizer finished on id: #' + customizerOptions.xhr_container_id);
179
+
180
+ // -------------------------------------------------------------------
181
+ // load gallery data
182
+ j1.adapter.jf_gallery.initialize(galleryOptions);
183
+
184
+ logger.info('initialize customizer ui|forms');
185
+
186
+ if ($formId.length) {
187
+ var timerid;
188
+
189
+ $("input[name='rowHeight']").on('input', function (e) {
190
+ var value = $(this).val();
191
+
192
+ if (value < imageHeightMin) { return false; }
193
+
194
+ if($(this).data('lastval') != value){
195
+ $(this).data('lastval', value);
196
+ clearTimeout(timerid);
197
+ //change action
198
+ timerid = setTimeout(function() {
199
+ $instance.justifiedGallery({rowHeight: value});
200
+ if (environment === 'development') {
201
+ logText = 'Gallery on ID ' +galleryId+ ' changed rowHeight to: ' +value;
202
+ logger.info(logText);
203
+ }
204
+ }, kbdDelay);
205
+ };
206
+ e.stopPropagation();
207
+ });
208
+
209
+ $('input[name="rowHeightMax"]').on('input', function (e) {
210
+ var value = $(this).val();
211
+
212
+ if($(this).data('lastval') != value){
213
+ $(this).data('lastval', value);
214
+ clearTimeout(timerid);
215
+ //change action
216
+ timerid = setTimeout(function() {
217
+ $instance.justifiedGallery({maxRowHeight: value});
218
+ if(environment === 'development') {
219
+ logText = 'Gallery on ID ' +galleryId+ ' changed maxRowHeight to: ' +value;
220
+ logger.info(logText);
221
+ }
222
+ }, kbdDelay);
223
+ };
224
+ e.stopPropagation();
225
+ });
226
+
227
+ $('input[name="margins"]').on('input', function (e) {
228
+ var value = $(this).val();
229
+
230
+ if($(this).data('lastval') != value){
231
+ $(this).data('lastval', value);
232
+ clearTimeout(timerid);
233
+ //change action
234
+ timerid = setTimeout(function() {
235
+ $instance.justifiedGallery({margins: value});
236
+ if(environment === 'development') {
237
+ logText = 'Gallery on ID ' +galleryId+ ' changed margins to: ' +value;
238
+ logger.info(logText);
239
+ }
240
+ }, kbdDelay);
241
+ };
242
+ e.stopPropagation();
243
+ });
244
+
245
+ $('input[name="border"]').on('input', function (e) {
246
+ var value = $(this).val();
247
+
248
+ if($(this).data('lastval') != value){
249
+ $(this).data('lastval', value);
250
+ clearTimeout(timerid);
251
+ //change action
252
+ timerid = setTimeout(function() {
253
+ $instance.justifiedGallery({border: value});
254
+ if(environment === 'development') {
255
+ logText = 'Gallery on ID ' +galleryId+ ' changed padding to: ' +value;
256
+ logger.info(logText);
257
+ }
258
+ }, kbdDelay);
259
+ };
260
+ e.stopPropagation();
261
+ });
262
+
263
+ $('input:checkbox[name="captions"]').on('click', function (e) {
264
+ var value = $(this).is(':checked');
265
+
266
+ $instance.justifiedGallery({captions: value});
267
+ if(environment === 'development') {
268
+ logText = 'Gallery on ID ' +galleryId+ ' changed captions to: ' +value;
269
+ logger.info(logText);
270
+ }
271
+ e.stopPropagation();
272
+ });
273
+
274
+ $('input:checkbox[name="random"]').on('click', function (e) {
275
+ var value = $(this).is(":checked");
276
+
277
+ $instance.justifiedGallery({randomize: value});
278
+ if(environment === 'development') {
279
+ logText = 'Gallery on ID ' +galleryId+ ' changed randomize to: ' +value;
280
+ logger.info(logText);
281
+ }
282
+ e.stopPropagation();
283
+ });
284
+
285
+ $('input:checkbox[name="justify_last_row"]').on('click', function (e) {
286
+ var value = $(this).is(':checked');
287
+
288
+ if (value == true) {
289
+ value = 'justify';
290
+ $instance.justifiedGallery({lastRow: value});
291
+ } else {
292
+ value = 'nojustify';
293
+ $instance.justifiedGallery({lastRow: value});
294
+ }
295
+ if(environment === 'development') {
296
+ logText = 'Gallery on ID ' +galleryId+ ' changed lastRow to: ' +value;
297
+ logger.info(logText);
298
+ }
299
+ e.stopPropagation();
300
+ });
301
+
302
+ $('input:checkbox[name="hide_last_row"]').on('click', function (e) {
303
+ var value = $(this).is(":checked");
304
+
305
+ if (value == true) {
306
+ value = 'hide';
307
+ $instance.justifiedGallery({lastRow: value});
308
+ } else {
309
+ value = 'nojustify';
310
+ $instance.justifiedGallery({lastRow: value});
311
+ }
312
+ if(environment === 'development') {
313
+ logText = 'Gallery on ID ' +galleryId+ ' changed lastRow to: ' +value;
314
+ logger.info(logText);
315
+ }
316
+ e.stopPropagation();
317
+ });
318
+
319
+ $('#jg-customizer-form button[name="reset-defaults"]').on('click', function (e) {
320
+
321
+ $('#rowHeight').val(customizerOptions.gallery_settings.rowHeight);
322
+ $('#rowHeightMax').val(customizerOptions.gallery_settings.maxRowHeight);
323
+ $('#margins').val(customizerOptions.gallery_settings.margins);
324
+ $('#border').val(customizerOptions.gallery_settings.border);
325
+ $('input:checkbox[name="captions"]').val("on").filter('[value="on"]').prop('checked', customizerOptions.gallery_settings.captions);
326
+ $('input:checkbox[name="random"]').val("off").filter('[value="off"]').prop('checked', customizerOptions.gallery_settings.randomize);
327
+ $('input:checkbox[name="justify_last_row"]').val("on").filter('[value="on"]').prop('checked', customizerOptions.gallery_settings.justifyLastRow);
328
+ $('input:checkbox[name="hide_last_row"]').val("off").filter('[value="off"]').prop('checked', customizerOptions.gallery_settings.hideLastRow);
329
+
330
+ $instance.justifiedGallery({
331
+ rowHeight: customizerOptions.gallery_settings.rowHeight,
332
+ maxRowHeight: customizerOptions.gallery_settings.maxRowHeight,
333
+ lastRow: customizerOptions.gallery_settings.lastRow,
334
+ margins: customizerOptions.gallery_settings.margins,
335
+ border: customizerOptions.gallery_settings.border,
336
+ randomize: customizerOptions.gallery_settings.randomize,
337
+ sort: customizerOptions.gallery_settings.sort,
338
+ refreshTime: customizerOptions.gallery_settings.refreshTime,
339
+ refreshSensitivity: customizerOptions.gallery_settings.refreshSensitivity,
340
+ justifyThreshold: customizerOptions.gallery_settings.justifyThreshold,
341
+ captions: customizerOptions.gallery_settings.captions
342
+ });
343
+
344
+ if(environment === 'development') {
345
+ logText = 'Gallery on ID ' +galleryId+ ' reset to default values';
346
+ logger.info(logText);
347
+ }
348
+ e.stopPropagation();
349
+ });
350
+
351
+ } // END form events
352
+
353
+ // See: https://jsfiddle.net/prathviraj080/vbbbw46a/1/
354
+ $('button.drawer-toggler').click(function(){
355
+ $('button.drawer-toggler span.mdi').toggleClass('mdi-menu mdi-close');
356
+ });
357
+ $('button.drawer-toggler').click(function(){
358
+ $('button.drawer-toggler').toggleClass('fadeIn rotateIn');
359
+ });
360
+
361
+ _this.setState('finished');
362
+ logger.info('state: ' + _this.getState());
363
+ logger.info('initializing module finished');
364
+ clearInterval(dependencies_met_data_loaded);
365
+
366
+ return true;
367
+ }
368
+ }, 25);
369
+
370
+ } // END if success
371
+ })
372
+ .catch(function(error) {
373
+ logger.error('loading html data failed at: j1.xhrData');
374
+ return false;
375
+ }); // End thenable
376
+
377
+ }, // END init
378
+
379
+ // -------------------------------------------------------------------------
380
+ // messageHandler: MessageHandler for J1 CookieConsent module
381
+ // Manage messages send from other J1 modules
382
+ // -------------------------------------------------------------------------
383
+ messageHandler: function (sender, message) {
384
+ var json_message = JSON.stringify(message, undefined, 2);
385
+
386
+ logText = 'received message from ' + sender + ': ' + json_message;
387
+ logger.debug(logText);
388
+
389
+ // -----------------------------------------------------------------------
390
+ // Process commands|actions
391
+ // -----------------------------------------------------------------------
392
+ if (message.type === 'command' && message.action === 'module_initialized') {
393
+ //
394
+ // Place handling of command|action here
395
+ //
396
+ logger.info(message.text);
397
+ }
398
+
399
+ //
400
+ // Place handling of other command|action here
401
+ //
402
+
403
+ return true;
404
+ }, // END messageHandler
405
+
406
+ // -------------------------------------------------------------------------
407
+ // setState
408
+ // Set the current (processing) state of the module
409
+ // -------------------------------------------------------------------------
410
+ setState: function (stat) {
411
+ j1.adapter.gallery_customizer.state = stat;
412
+ }, // END setState
413
+
414
+ // -------------------------------------------------------------------------
415
+ // getState
416
+ // Returns the current (processing) state of the module
417
+ // -------------------------------------------------------------------------
418
+ getState: function () {
419
+ return j1.adapter.gallery_customizer.state;
420
+ } // END state
421
+
422
+ }; // END return
423
+ })(j1, window);
424
+
425
+ {% endcapture %}
426
+ {{ cache | strip_empty_lines }}
427
+ {% assign cache = nil %}
@@ -0,0 +1,2034 @@
1
+ ---
2
+ regenerate: true
3
+ ---
4
+
5
+ {% capture cache %}
6
+
7
+ {% comment %}
8
+ # -----------------------------------------------------------------------------
9
+ # ~/assets/themes/j1/core/js/j1.js
10
+ # Liquid template to initialize J1 Template Core functions
11
+ #
12
+ # Product/Info:
13
+ # https://jekyll.one
14
+ #
15
+ # Copyright (C) 2020 Juergen Adams
16
+ #
17
+ # J1 Template is licensed under the MIT License.
18
+ # For details, see https://jekyll.one
19
+ # -----------------------------------------------------------------------------
20
+ # TODO: jadams, 2019-01-20: Isolate drawer, switch from BME code
21
+ # -----------------------------------------------------------------------------
22
+ # Test data:
23
+ # {{ liquid_var | debug }}
24
+ # -----------------------------------------------------------------------------
25
+ {% endcomment %}
26
+
27
+ {% comment %} Liquid procedures
28
+ -------------------------------------------------------------------------------- {% endcomment %}
29
+
30
+ {% comment %} Set global settings
31
+ -------------------------------------------------------------------------------- {% endcomment %}
32
+ {% assign environment = site.environment %}
33
+ {% assign template_version = site.version %}
34
+
35
+ {% if site.permalink == 'none' %}
36
+ {% capture page_url %}{{ site.url }}.html{% endcapture %}
37
+ {% else %}
38
+ {% capture page_url %}{{ site.url }}{% endcapture %}
39
+ {% endif %}
40
+
41
+ {% comment %} Process YML config data
42
+ ================================================================================ {% endcomment %}
43
+
44
+ {% comment %} Set config files
45
+ -------------------------------------------------------------------------------- {% endcomment %}
46
+ {% assign template_config = site.data.template_settings %}
47
+ {% assign blocks = site.data.blocks %}
48
+ {% assign modules = site.data.modules %}
49
+
50
+ {% comment %} Set config data
51
+ -------------------------------------------------------------------------------- {% endcomment %}
52
+ {% assign banner_config_defaults = blocks.defaults.banner.defaults %}
53
+ {% assign banner_config_settings = blocks.banner.settings %}
54
+ {% assign panel_config_defaults = blocks.defaults.panel.defaults %}
55
+ {% assign panel_config_settings = blocks.panel.settings %}
56
+ {% assign footer_config_defaults = blocks.defaults.footer.defaults %}
57
+ {% assign toccer_defaults = modules.defaults.toccer.defaults %}
58
+ {% assign toccer_settings = modules.toccer.settings %}
59
+ {% assign themer_defaults = modules.defaults.themer.defaults %}
60
+ {% assign themer_settings = modules.themer.settings %}
61
+
62
+ {% assign authentication_defaults = modules.defaults.authentication.defaults %}
63
+ {% assign authentication_settings = modules.authentication.settings %}
64
+
65
+ {% comment %} Set config options
66
+ -------------------------------------------------------------------------------- {% endcomment %}
67
+ {% assign toccer_options = toccer_defaults | merge: toccer_settings %}
68
+ {% assign themer_options = themer_defaults | merge: themer_settings %}
69
+
70
+ {% assign authentication_options = authentication_defaults | merge: authentication_settings %}
71
+
72
+ {% assign footer_id = footer_config_defaults.container-id %}
73
+ {% assign footer_data_path = footer_config_defaults.data_path %}
74
+ {% assign banner_data_path = banner_config_defaults.data_path %}
75
+ {% assign panel_data_path = panel_config_defaults.data_path %}
76
+
77
+ {% assign hideOnReload = modules.themer_options.hideOnReload %}
78
+
79
+ /*
80
+ # -----------------------------------------------------------------------------
81
+ # ~/assets/themes/j1/adapter/js/j1_template.js
82
+ # JS Adapter for J1 Template
83
+ #
84
+ # Product/Info:
85
+ # https://jekyll.one
86
+ #
87
+ # Copyright (C) 2020 Juergen Adams
88
+ #
89
+ # J1 Template is licensed under the MIT License.
90
+ # For details, see https://jekyll.one
91
+ # -----------------------------------------------------------------------------
92
+ # Adapter generated: {{site.time}}
93
+ # -----------------------------------------------------------------------------
94
+ */
95
+ 'use strict';
96
+
97
+ var j1 = (function () {
98
+
99
+ // ---------------------------------------------------------------------------
100
+ // globals
101
+ // ---------------------------------------------------------------------------
102
+ var rePager = new RegExp('navigator|dateview|tagview|archive');
103
+ var environment = '{{environment}}';
104
+ var moduleOptions = {};
105
+ var j1_runtime_data = {};
106
+
107
+ // Status information
108
+ var state = 'not_started';
109
+ var mode = 'not_detected';
110
+
111
+ var current_user_data;
112
+ var current_page;
113
+ var previous_page;
114
+ var last_pager;
115
+ var last_pager_url;
116
+ var app_detected;
117
+ var user_session_detected;
118
+
119
+ // Connector settings
120
+ var translation_enabled = {{template_config.translation.enabled}}
121
+
122
+ // Theme information
123
+ var themeName;
124
+ var themeCss;
125
+ var themeExtensionCss;
126
+
127
+ // Pathes of J1 data files
128
+ var colors_data_path = '{{template_config.colors_data_path}}';
129
+ var font_size_data_path = '{{template_config.font_size_data_path}}';
130
+ var runtime_data_path = '{{template_config.runtime_data_path}}';
131
+ var message_catalog_data_path = '{{template_config.message_catalog_data_path}}';
132
+
133
+ // Logger
134
+ var logger;
135
+ var logText;
136
+
137
+ var _this;
138
+ var settings;
139
+ var json_data;
140
+ var ep;
141
+ var baseUrl;
142
+ var referrer;
143
+
144
+ var default_theme_css = environment === 'production' ? '/assets/themes/j1/core/css/uno.min.css' : '/assets/themes/j1/core/css/uno.css';
145
+ var default_theme_name = 'Uno';
146
+ var default_theme_author = 'J1 Team';
147
+ var default_theme_link = 'https://jekyll.one/';
148
+ var default_white_listed_pages = [];
149
+
150
+ var cookie_names = {
151
+ 'app_session': '{{template_config.cookies.app_session}}',
152
+ 'user_session': '{{template_config.cookies.user_session}}',
153
+ 'user_state': '{{template_config.cookies.user_state}}'
154
+ }
155
+
156
+ // user SESSION cookie (initial values)
157
+ var user_session = {
158
+ 'mode': 'na',
159
+ 'locale': navigator.language || navigator.userLanguage,
160
+ 'user_name': '{{template_config.user.user_name}}',
161
+ 'provider': '{{template_config.user.provider}}',
162
+ 'provider_membership': '{{template_config.user.provider_membership}}',
163
+ 'provider_permissions': 'public,{{template_config.user.provider_permissions}}',
164
+ 'provider_site_url': '{{template_config.user.provider_site_url}}',
165
+ 'provider_home_url': '{{template_config.user.provider_home_url}}',
166
+ 'provider_blog_url': '{{template_config.user.provider_blog_url}}',
167
+ 'provider_member_url': '{{template_config.user.provider_member_url}}',
168
+ 'provider_privacy_url': '{{template_config.user.provider_privacy_url}}',
169
+ 'requested_page': 'na',
170
+ 'previous_page': 'na',
171
+ 'last_pager': '/pages/public/blog/navigator/'
172
+ };
173
+
174
+ // user STATE cookie (initial values)
175
+ var user_state = {
176
+ 'theme_css': default_theme_css,
177
+ 'theme_extension_css': '{{themer_options.includeBootswatch}}',
178
+ 'theme_name': default_theme_name,
179
+ 'theme_author': default_theme_author,
180
+ 'theme_author_url': '{{template_config.theme_author_url}}',
181
+ 'theme_link': default_theme_link,
182
+ 'theme_version': '{{site.version}}',
183
+ 'cookies_accepted': 'pending',
184
+ 'whitelistedPages': default_white_listed_pages,
185
+ 'deleteOnDecline': false,
186
+ 'showConsentOnPending': false,
187
+ 'stopScrolling': true,
188
+ 'session_active': false,
189
+ 'last_session_ts': '',
190
+ 'cc_authenticated': false
191
+ };
192
+
193
+ // ---------------------------------------------------------------------------
194
+ // helper functions
195
+ // ---------------------------------------------------------------------------
196
+
197
+ function executeFunctionByName(functionName, context /*, args */) {
198
+ // See: https://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string
199
+ //
200
+ var args = Array.prototype.slice.call(arguments, 2);
201
+ var namespaces = functionName.split(".");
202
+ var func = namespaces.pop();
203
+ for(var i = 0; i < namespaces.length; i++) {
204
+ context = context[namespaces[i]];
205
+ }
206
+ return context[func].apply(context, args);
207
+ }
208
+
209
+ // ---------------------------------------------------------------------------
210
+ // main object
211
+ // ---------------------------------------------------------------------------
212
+ return {
213
+
214
+ // -------------------------------------------------------------------------
215
+ // Initializer
216
+ // -------------------------------------------------------------------------
217
+ init: function (options) {
218
+
219
+ // -----------------------------------------------------------------------
220
+ // global var (function)
221
+ // -----------------------------------------------------------------------
222
+ var logger = log4javascript.getLogger('j1.init');
223
+ var url = new parseURL(window.location.href)
224
+ var baseUrl = url.origin;
225
+ var epoch = Math.floor(Date.now()/1000);
226
+ var timestamp_now = moment.unix(epoch).format('YYYY-MM-DD HH:mm:ss');
227
+ var curr_state = 'started';
228
+
229
+ // -----------------------------------------------------------------------
230
+ // options loader
231
+ // -----------------------------------------------------------------------
232
+ var settings = $.extend(
233
+ {
234
+ foo: 'foo_option',
235
+ bar: 'bar_option'
236
+ },
237
+ options
238
+ );
239
+
240
+ // catch senseless detect url 404 errors (middleware /status)
241
+ // See: https://stackoverflow.com/questions/4687235/jquery-get-or-post-to-catch-page-load-error-eg-404
242
+ $.ajaxSetup({
243
+ // called on `$.get()`, `$.post()`, `$.ajax()`
244
+ statusCode : {
245
+ // raised on response status code 404
246
+ 404 : function (jqxhr, textStatus, errorThrown) {
247
+ var interval_count = 0;
248
+ var max_count = 10;
249
+ var dependencies_met_logger = setInterval(function() {
250
+ interval_count += 1;
251
+ if ( j1.adapter.logger.getState() == 'finished' ) {
252
+ var logger = log4javascript.getLogger('j1.init');
253
+ clearInterval(dependencies_met_logger);
254
+ if(jqxhr.responseText.indexOf('GET /status') > -1) {
255
+ logger.info('no middleware found on url /status: ignored');
256
+ logger.info('continue on mode: web');
257
+ }
258
+ if (interval_count > max_count) {
259
+ logger.warn('dependency check failed for module: logger');
260
+ logger.warn('continue on initializer unchecked');
261
+ j1.adapter.navigator.init();
262
+ }
263
+ }
264
+ }, 25);
265
+ }
266
+ }
267
+ });
268
+
269
+ // -----------------------------------------------------------------------
270
+ // Session ON_CLOSE event
271
+ // Update user STATE cookie|Remove user SESSION cookie on window CLOSE
272
+ // See: https://stackoverflow.com/questions/3888902/detect-browser-or-tab-closing
273
+ // -----------------------------------------------------------------------
274
+ window.addEventListener('beforeunload', function (event) {
275
+ var cookie_names = j1.getCookieNames();
276
+ var cookie_user_state_name = cookie_names.user_state;
277
+ var cookie_user_session_name = cookie_names.user_session;
278
+ var epoch = Math.floor(Date.now()/1000);
279
+ var timestamp_now = moment.unix(epoch).format('YYYY-MM-DD HH:mm:ss');
280
+ var user_state = j1.readCookie(cookie_user_state_name);
281
+ var ep_status;
282
+ var url;
283
+ var baseUrl;
284
+
285
+ user_state.session_active = false;
286
+ user_state.last_session_ts = timestamp_now;
287
+
288
+ j1.writeCookie({
289
+ name: cookie_user_state_name,
290
+ data: user_state,
291
+ expires: 365
292
+ });
293
+
294
+ });
295
+
296
+ // -----------------------------------------------------------------------
297
+ // Initialize|Load (existing) user cookies
298
+ // -----------------------------------------------------------------------
299
+ user_session.created = timestamp_now;
300
+ user_session.timestamp = timestamp_now;
301
+
302
+ user_session = j1.existsCookie(cookie_names.user_session)
303
+ ? j1.readCookie(cookie_names.user_session)
304
+ : j1.writeCookie({
305
+ name: cookie_names.user_session,
306
+ data: user_session,
307
+ });
308
+
309
+ user_state = j1.existsCookie(cookie_names.user_state)
310
+ ? j1.readCookie(cookie_names.user_state)
311
+ : j1.writeCookie({
312
+ name: cookie_names.user_state,
313
+ data: user_state,
314
+ expires: 365
315
+ });
316
+
317
+ user_state.session_active = true;
318
+ j1.writeCookie({
319
+ name: cookie_names.user_state,
320
+ data: user_state,
321
+ expires: 365
322
+ });
323
+
324
+ // Detect middleware (mode 'app') and update user session cookie
325
+ // -----------------------------------------------------------------------
326
+ // if (user_session.mode === 'na' || user_session.mode === 'app') {
327
+ if (user_session.mode === 'na') {
328
+ var url = new parseURL(window.location.href);
329
+ var ep_status = baseUrl + '/status' + '?page=' + window.location.pathname;
330
+ var detectTimeout = 50;
331
+
332
+ baseUrl = url.origin;
333
+
334
+ $.when ($.ajax(ep_status))
335
+ .then(function(data) {
336
+ var logger = log4javascript.getLogger('j1.init');
337
+ user_session = j1.readCookie(cookie_names.user_session);
338
+ user_session.mode = 'app';
339
+ user_session.requested_page = window.location.pathname;
340
+ user_session.timestamp = timestamp_now;
341
+ user_session = j1.mergeData(user_session, data);
342
+ logText = 'mode detected: ' + user_session.mode;
343
+
344
+ logger.info(logText);
345
+ logger.info('update user session cookie');
346
+ j1.writeCookie({
347
+ name: cookie_names.user_session,
348
+ data: user_session
349
+ });
350
+ j1.setState(curr_state);
351
+ logger.info('state: ' + j1.getState());
352
+ })
353
+ .catch(function(error) {
354
+ // jadams, 2018-08-31: Why a hell a setTimeout is needed ???
355
+ setTimeout (function() {
356
+ var logger = log4javascript.getLogger('j1.init');
357
+ user_session = j1.readCookie(cookie_names.user_session);
358
+ user_session.mode = 'web';
359
+ user_session.requested_page = window.location.pathname;
360
+ user_session.timestamp = timestamp_now;
361
+ logText = 'mode detected: ' + user_session.mode;
362
+
363
+ logger.info(logText);
364
+ j1.writeCookie({
365
+ name: cookie_names.user_session,
366
+ data: user_session
367
+ });
368
+ j1.setState(curr_state);
369
+ logger.info('state: ' + j1.getState());
370
+ }, detectTimeout);
371
+ });
372
+ } else {
373
+ state = 'started';
374
+ logger.info('state: ' + state);
375
+ logger.info('page is being initialized');
376
+ }
377
+
378
+ {% comment %} Deferred data loads
379
+ See: https://stackoverflow.com/questions/3709597/wait-until-all-jquery-ajax-requests-are-done
380
+ Load J1 Template data objects 'asychronously'
381
+ -------------------------------------------------------------------------- {% endcomment %}
382
+
383
+ // -----------------------------------------------------------------------
384
+ // data loader (should be rewitten to xhrData() )
385
+ // -----------------------------------------------------------------------
386
+ $.when (
387
+ j1.getColorData(colors_data_path),
388
+ j1.getFontSizeData(font_size_data_path),
389
+ j1.getMessageCatalog(message_catalog_data_path))
390
+ .done (function(colorData, fontSizes, messageCatalog, runtime) {
391
+ j1.colors = colorData[0];
392
+ j1.fonts = fontSizes[0];
393
+
394
+ // set logger for callback|anonymous
395
+ //
396
+ var logger = log4javascript.getLogger('j1.init');
397
+
398
+ logText = j1.getMessage('info', 'getState', 'text');
399
+ logText = logText + j1.getMessage('info', 'getState', 'data_objects');
400
+ logText = logText + j1.getMessage('info', 'getState', 'finished');
401
+ j1.logger('j1.init', 'info', logText);
402
+
403
+ logText = j1.getMessage('info', 'setState', 'text');
404
+ logText = logText + j1.getMessage('info', 'setState', 'started');
405
+ j1.logger('j1.init', 'info', logText);
406
+ executeFunctionByName('j1.setState', window, state);
407
+
408
+ // set logger for callback|anonymous
409
+ var logger = log4javascript.getLogger('j1.init');
410
+
411
+ if ( settings.scrollbar === 'false' ) {
412
+ $('body').addClass( 'hide-scrollbar' )
413
+ $('html').addClass( 'hide-scrollbar-moz' )
414
+ }
415
+
416
+ logger.info('read user state from cookie');
417
+ user_session = j1.readCookie(cookie_names.user_session);
418
+
419
+ // process|update UserState
420
+ //
421
+ themeName = user_session.theme_name;
422
+ themeCss = user_session.theme_css;
423
+ themeExtensionCss = user_session.theme_extension_css;
424
+
425
+ // save last page access
426
+ // See: https://stackoverflow.com/questions/3528324/how-to-get-the-previous-url-in-javascript
427
+ // See: https://developer.mozilla.org/de/docs/Web/API/Window/history
428
+ //
429
+ user_session.timestamp = timestamp_now;
430
+ referrer = new parseURL(document.referrer);
431
+ current_page = window.location.pathname;
432
+ user_session.requested_page = current_page;
433
+ user_session.previous_page = referrer.search === '' ?
434
+ (referrer.pathname === '' ? current_page : referrer.pathname) :
435
+ (user_session.previous_page === '' || user_session.previous_page === 'na'
436
+ ? '/'
437
+ : user_session.previous_page
438
+ );
439
+
440
+ // calculate last 'pager' if any
441
+ //
442
+ if (rePager.test(user_session.previous_page)) {
443
+ last_pager = user_session.previous_page;
444
+ user_session.last_pager = last_pager;
445
+ } else {
446
+ last_pager = user_session.last_pager;
447
+ }
448
+
449
+ logger.info('update user session cookie');
450
+ j1.writeCookie({
451
+ name: cookie_names.user_session,
452
+ data: user_session
453
+ });
454
+
455
+ // ---------------------------------------------------------------------
456
+ // Initialize page resources for global modules (sequential asynchronous)
457
+ // (should be rewitten to xhrData() )
458
+ // ---------------------------------------------------------------------
459
+ $.when (
460
+ j1.initBanner(settings),
461
+ j1.initPanel(settings),
462
+ j1.initFooter(settings) )
463
+ .then (function (initBanner_response, initPanel_response, initFooter_response) {
464
+ var logger = log4javascript.getLogger('j1.init');
465
+
466
+ // Wait for LAST thenable (footer) in chain finishes
467
+ var footerLoaded = setInterval(function() {
468
+ if ( j1.getState() == 'footer_loaded') {
469
+ // clear interval checking
470
+ clearInterval(footerLoaded);
471
+ logger.info('loading data completed');
472
+
473
+ // Continue to run initializers
474
+ //
475
+ state = j1.getMessage('info', 'setState', 'running');
476
+ logText = j1.getMessage('info', 'setState', 'text');
477
+ logText = logText + j1.getMessage('info', 'setState', 'running');
478
+ j1.logger('j1.init', 'info', logText);
479
+
480
+ user_session.timestamp = timestamp_now;
481
+ j1.writeCookie({
482
+ name: cookie_names.user_session,
483
+ data: user_session
484
+ });
485
+
486
+ // ---------------------------------------------------------------
487
+ // Finalize|Display page (sequential asynchronous)
488
+ // NOTE:
489
+ // jadams 2019-01-20: for MDB, enabled only drawer, switch
490
+ // and ripples
491
+ // ---------------------------------------------------------------
492
+ $.when (
493
+ j1.initMDB(settings),
494
+ j1.initClipboard(settings))
495
+ .then (function () {
496
+ j1.displayPage();
497
+ })
498
+ .catch(function(error) {
499
+ var logger = log4javascript.getLogger('j1.init');
500
+ json_data = JSON.stringify(error, undefined, 2);
501
+ logText = 'deferred: ' + json_data;
502
+ logger.error(logText);
503
+ });
504
+ }
505
+ }, 25); // END 'footerLoaded'
506
+ }) // END load global modules
507
+ .catch(function(error) {
508
+ var logger = log4javascript.getLogger('j1.init');
509
+ json_data = JSON.stringify(error, undefined, 2);
510
+ logText = 'deferred: ' + json_data;
511
+ logger.error(logText);
512
+ });
513
+ }) // END load global data objects
514
+ .catch(function(error) {
515
+ var logger = log4javascript.getLogger('j1.init');
516
+ json_data = JSON.stringify(error, undefined, 2);
517
+ logText = 'deferred: ' + json_data;
518
+ logger.error(logText);
519
+ });
520
+
521
+ }, // END init
522
+
523
+ // -------------------------------------------------------------------------
524
+ // initBanner
525
+ // AJAX fetcher to load and place all banner used for a page
526
+ // -------------------------------------------------------------------------
527
+ initBanner: function (options) {
528
+ var logger = log4javascript.getLogger('j1.initBanner');
529
+ var banner = [];
530
+ var bannerOptions = [];
531
+ var mod = 'j1';
532
+
533
+ {% comment %}
534
+ Closure to pass additional data (e.g. #banner_id) to AJAX load callback
535
+ See: http://stackoverflow.com/questions/939032/jquery-pass-more-parameters-into-callback
536
+ -------------------------------------------------------------------------- {% endcomment %}
537
+ var cb_load_closure = function(banner_id) {
538
+ return function ( responseTxt, statusTxt, xhr ) {
539
+ if ( statusTxt == 'success' ) {
540
+ logText = 'loading banner completed on id: ' +banner_id;
541
+ logger.info(logText);
542
+ }
543
+ if ( statusTxt == 'error' ) {
544
+ logText = 'loading banner failed on id: ' +banner_id+ ', error: ' + xhr.status + ': ' + xhr.statusText;
545
+ logger.error(logText);
546
+ // Set|Log status
547
+ state = 'failed';
548
+ logger.error('state: ' + state);
549
+ }
550
+ };
551
+ };
552
+
553
+ {% comment %} Collect all banner id|s configured
554
+ -------------------------------------------------------------------------- {% endcomment %}
555
+ {% for items in banner_config_settings %}
556
+ {% assign key = items[0] %}
557
+ {% assign value = items[1] %}
558
+
559
+ {% if key == 'divider' %} {% assign banner_config = value %} {% endif %}
560
+ {% if key == 'teaser' %} {% assign banner_config = value %} {% endif %}
561
+ {% if key == 'image' %} {% assign banner_config = value %} {% endif %}
562
+ {% if key == 'parallax' %} {% assign banner_config = value %} {% endif %}
563
+ {% if key == 'exception' %} {% assign banner_config = value %} {% endif %}
564
+
565
+ {% for items in banner_config %}
566
+ {% for banners in items %}
567
+
568
+ {% for banner in banners %}
569
+ {% for item in banner %}
570
+ {% assign key = item[0] %}
571
+ {% assign value = item[1] %}
572
+
573
+ {% if key and debug %} item:value {{key}}:{{value}} {% endif %}
574
+
575
+ {% if key == 'id' %} {% assign id = value %} {% endif %}
576
+ {% if key == 'enabled' %} {% assign enabled = value %} {% endif %}
577
+ {% if key == 'background_color_1' %} {% assign background_color_1 = value %} {% endif %}
578
+ {% if key == 'background_color_2' %} {% assign background_color_2 = value %} {% endif %}
579
+ {% endfor %}
580
+ {% endfor %}
581
+
582
+ {% if id and enabled %}
583
+ {% comment %} Add CSS styles for current banner to section <HEAD>
584
+ -------------------------------------------------------------------- {% endcomment %}
585
+ {% if background_color_1 and background_color_2 %}
586
+ var banner_backround_style = '';
587
+ // Initialze banner background gradient/colors
588
+ banner_backround_style += "<style> .{{id}}-background { ";
589
+ banner_backround_style += "background-image: -webkit-gradient(linear, left top, left bottom, from( " +j1.setColorData('{{background_color_1}}')+ " ), to( " +j1.setColorData('{{background_color_2}}')+ " ));";
590
+ banner_backround_style += "background-image: -webkit-linear-gradient(top, " +j1.setColorData('{{background_color_1}}')+ " 0%, " +j1.setColorData('{{background_color_2}}')+ " 100%);";
591
+ banner_backround_style += "background-image: -o-linear-gradient(top, " +j1.setColorData('{{background_color_1}}')+ " 0%, " +j1.setColorData('{{background_color_2}}')+ " 100%);";
592
+ banner_backround_style += "background-image: linear-gradient(to bottom, " +j1.setColorData('{{background_color_1}}')+ " 0%, " +j1.setColorData('{{background_color_2}}')+ " 100%);";
593
+ banner_backround_style += 'filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="' +j1.setColorData('{{background_color_1}}')+ '", endColorstr="' +j1.setColorData('{{background_color_2}}')+ '", GradientType=0); ';
594
+ banner_backround_style += "} </style>";
595
+ $('head').append( banner_backround_style );
596
+ {% endif %}
597
+
598
+ {% comment %} Register current banner
599
+ -------------------------------------------------------------------- {% endcomment %}
600
+ banner.push('{{id}}');
601
+ {% endif %}
602
+
603
+ {% endfor %} {% comment %} END banners {% endcomment %}
604
+
605
+ {% comment %} Reset (Liquid) element variables
606
+ ---------------------------------------------------------------------- {% endcomment %}
607
+ {% assign id = nil %}
608
+ {% assign enabled = nil %}
609
+ {% assign background_color_1 = nil %}
610
+ {% assign background_color_2 = nil %}
611
+ {% assign banner_config = nil %}
612
+
613
+ {% endfor %} {% comment %} END banner_config {% endcomment %}
614
+ {% endfor %} {% comment %} END banner_config_settings {% endcomment %}
615
+
616
+ {% comment %} REGISTER exceptions container
617
+ -------------------------------------------------------------------------- {% endcomment %}
618
+ banner.push('exception_container');
619
+
620
+ {% comment %} LOAD all banner registered
621
+ -------------------------------------------------------------------------- {% endcomment %}
622
+ if ( banner.length ) {
623
+ for (var i in banner) {
624
+ var id = '#' + banner[i];
625
+ var selector = $(id);
626
+ if (selector.length) {
627
+ logText = 'loading banner on id: ' +banner[i];
628
+ logger.info(logText);
629
+ var banner_data_path = '{{banner_data_path}} ' + id + ' > *';
630
+ selector.load( banner_data_path, cb_load_closure( id ) );
631
+ }
632
+ }
633
+ } else {
634
+ logText = 'no banner found in site';
635
+ logger.info(logText);
636
+ }
637
+
638
+ return true;
639
+ }, // END initBanner
640
+
641
+ // -------------------------------------------------------------------------
642
+ // initPanel
643
+ // AJAX fetcher to load and place all panel used for a page
644
+ // -------------------------------------------------------------------------
645
+ // ToDo:
646
+ initPanel: function ( options ) {
647
+ var logger = log4javascript.getLogger('j1.initPanel');
648
+ var panel = [];
649
+ var mod = 'j1';
650
+
651
+ {% comment %} Closure to pass additional data (e.g. panel_id) to AJAX load callback
652
+ See: http://stackoverflow.com/questions/939032/jquery-pass-more-parameters-into-callback
653
+ -------------------------------------------------------------------------- {% endcomment %}
654
+ var cb_load_closure = function(panel_id) {
655
+ return function ( responseTxt, statusTxt, xhr ) {
656
+ if ( statusTxt == 'success' ) {
657
+ logText = 'loading panel completed on id: ' +panel_id;
658
+ logger.info(logText);
659
+ }
660
+ if ( statusTxt == 'error' ) {
661
+ logText = 'loading panel failed on id: ' +panel_id+ ', error ' + xhr.status + ': ' + xhr.statusText;
662
+ logger.error(logText);
663
+ // Set|Log status
664
+ state = 'Error';
665
+ logger.error('state: ' + state);
666
+ }
667
+ };
668
+ };
669
+
670
+ {% comment %} Collect all panel id|s configured
671
+ -------------------------------------------------------------------------- {% endcomment %}
672
+ {% for items in panel_config_settings %}
673
+ {% assign key = items[0] %}
674
+ {% assign value = items[1] %}
675
+
676
+ {% if key == 'intro' %} {% assign panel_config = value %} {% endif %}
677
+ {% if key == 'service' %} {% assign panel_config = value %} {% endif %}
678
+ {% if key == 'step' %} {% assign panel_config = value %} {% endif %}
679
+ {% if key == 'news' %} {% assign panel_config = value %} {% endif %}
680
+ {% if key == 'exception' %} {% assign panel_config = value %} {% endif %}
681
+
682
+ {% for items in panel_config %}
683
+ {% for panels in items %}
684
+
685
+ {% for panel in panels %}
686
+ {% for item in panel %}
687
+ {% assign key = item[0] %}
688
+ {% assign value = item[1] %}
689
+
690
+ {% if key and debug %} item:value {{key}}:{{value}} {% endif %}
691
+
692
+ {% if key == 'id' %} {% assign id = value %} {% endif %}
693
+ {% if key == 'enabled' %} {% assign enabled = value %} {% endif %}
694
+ {% endfor %}
695
+ {% endfor %}
696
+
697
+ {% comment %} Register current panel
698
+ -------------------------------------------------------------------------- {% endcomment %}
699
+ {% if id and enabled %}
700
+ panel.push('{{id}}');
701
+ {% endif %}
702
+
703
+ {% comment %} Reset (Liquid) element variables
704
+ -------------------------------------------------------------------------- {% endcomment %}
705
+ {% assign id = nil %}
706
+ {% assign enabled = nil %}
707
+ {% assign panel_config = nil %}
708
+
709
+ {% endfor %} {% comment %} END panels {% endcomment %}
710
+ {% endfor %} {% comment %} END panel_config {% endcomment %}
711
+ {% endfor %} {% comment %} END panel_config_settings {% endcomment %}
712
+
713
+ if ( panel.length ) {
714
+ for (var i in panel) {
715
+ var id = "#" + panel[i];
716
+ var selector = $(id);
717
+ if ( selector.length ) {
718
+ logText = 'loading panel on id: ' +panel[i];
719
+ logger.info(logText);
720
+ var panel_data_path = '{{panel_data_path}} ' + id + ' > *';
721
+ selector.load( panel_data_path, cb_load_closure( id ) );
722
+ }
723
+ }
724
+ } else {
725
+ logText = 'no panel found in site';
726
+ logger.info(logText);
727
+ }
728
+
729
+ return true;
730
+ }, // END initPanel
731
+
732
+ // -------------------------------------------------------------------------
733
+ // initFooter
734
+ // AJAX fetcher to load and place the footer used for a page
735
+ // -------------------------------------------------------------------------
736
+ initFooter: function ( options ) {
737
+ var logger = log4javascript.getLogger('j1.initFooter');
738
+ var mod = 'j1';
739
+
740
+ logText = 'initialization started';
741
+ logger.info(logText);
742
+
743
+ var cb_load_closure = function(footer_id) {
744
+ return function ( responseTxt, statusTxt, xhr ) {
745
+ if ( statusTxt == 'success' ) {
746
+ logText = 'footer loaded successfully on id: ' + footer_id;
747
+ logger.info(logText);
748
+
749
+ state = 'footer_loaded';
750
+ logger.info('set state for module ' + mod + ': ' + state);
751
+ executeFunctionByName(mod + '.setState', window, state)
752
+
753
+ logText = 'initialization finished';
754
+ logger.info(logText);
755
+ }
756
+ if ( statusTxt == 'error' ) {
757
+ logText = 'loading footer failed on id: ' +footer_id+ ', error ' + xhr.status + ': ' + xhr.statusText;
758
+ logger.error(logText);
759
+ // Set|Log status
760
+ state = 'failed';
761
+ logger.error('state: ' + state);
762
+ logText = 'initialization finished';
763
+ logger.info(logText);
764
+ }
765
+ };
766
+ };
767
+
768
+ var id = '#' + '{{footer_id}}';
769
+ var selector = $(id);
770
+ if ( selector.length ) {
771
+ var footer_data_path = '{{footer_data_path}}';
772
+ // var footer_data_path = '{{footer_data_path}}' + id + ' > *';
773
+ selector.load( footer_data_path, cb_load_closure( id ) );
774
+ }
775
+
776
+ return true;
777
+ }, // END initFooter
778
+
779
+ // -------------------------------------------------------------------------
780
+ // initClipboard
781
+ // Create copy-to-clipboard for all pages
782
+ // -------------------------------------------------------------------------
783
+ initClipboard: function ( options ) {
784
+ var logger = log4javascript.getLogger('j1.initClipboard');
785
+
786
+ logText = 'initialization started';
787
+ logger.info(logText);
788
+
789
+ // insert copy to clipboard button before all elements having a
790
+ // class of ".highlight" assigned to (e.g. Asciidoc source blocks)
791
+ $('.highlight').each(function () {
792
+ // Check if no clipboard should be applied
793
+ var isNoClip = $(this).closest('.noclip');
794
+ if ( isNoClip.length == 0) {
795
+ var btnHtml = '<div class="j1-clipboard"><span class="btn-clipboard j1-tooltip" data-toggle="tooltip" data-placement="left" title="Copy to clipboard">Copy</span></div>';
796
+ var bumms = $(this).closest('.noclip');
797
+ $(this).before(btnHtml);
798
+ $('.btn-clipboard').tooltip();
799
+ }
800
+ });
801
+ var clipboard = new Clipboard( '.btn-clipboard', {
802
+ target: function target(trigger) {
803
+ return trigger.parentNode.nextElementSibling;
804
+ }
805
+ });
806
+
807
+ // Manage clipboard events
808
+ clipboard.on('success', function (e) {
809
+ $(e.trigger).attr('title', 'copied!').tooltip('_fixTitle').tooltip('show').attr('title', 'Copy to clipboard').tooltip('_fixTitle');
810
+ var logger = log4javascript.getLogger('j1.initClipboard');
811
+ var logText = 'initialization copy-to-clipboard sucessfull';
812
+ logger.debug(logText);
813
+ /* Cleanup clipped data for trailing numbers */
814
+ var splitted = e.text.split('\n');
815
+ var concat;
816
+ var i;
817
+ for (i=0; i<splitted.length; i++) {
818
+ concat += splitted[i].replace(/^\s+\d+/, '');
819
+ }
820
+ e.clearSelection();
821
+ });
822
+ clipboard.on('error', function (e) {
823
+ var fallbackMsg = /Mac/i.test(navigator.userAgent) ? 'press \u2318 to copy' : 'press ctrl-c to copy';
824
+ logger = log4javascript.getLogger('j1.initClipboard');
825
+ logText = 'initialization copy-to-clipboard failed, fallback used.';
826
+ logger.warn(logText);
827
+ $(e.trigger).attr('title', fallbackMsg).tooltip('_fixTitle').tooltip('show').attr('title', 'copy to clipboard').tooltip('_fixTitle');
828
+ });
829
+
830
+ logText = 'initialization finished';
831
+ logger.info(logText);
832
+
833
+ return true;
834
+ }, // END initClipboard
835
+
836
+ // -------------------------------------------------------------------------
837
+ // displayPage
838
+ // Show the page after timeout of {{hideOnReload}} ms
839
+ // -------------------------------------------------------------------------
840
+ // NOTE:
841
+ // jadams, 2019-08-21: for unknown reason, the user state data
842
+ // (read from cookie) seems not coorect (or loaded too late).
843
+ // To make correct data sure for APP mode, a status request is done
844
+ // to load the current state from the middleware (skipped in WEB mode)
845
+ // -------------------------------------------------------------------------
846
+ displayPage: function (options) {
847
+ var logger = log4javascript.getLogger('j1.displayPage');
848
+ var flickerTimeout = {{template_config.flicker_timeout}};
849
+ var url = new parseURL(window.location.href)
850
+ var baseUrl = url.origin;
851
+ var ep_status = baseUrl + '/status' + '?page=' + window.location.pathname;
852
+ var user_session = j1.readCookie(cookie_names.user_session);
853
+ var user_state = j1.readCookie(cookie_names.user_state);
854
+ var current_url = new parseURL(window.location.href);
855
+ var providerPermissions = {};
856
+ var provider;
857
+ var previous_page;
858
+ var appDetected;
859
+ var categoryAllowed;
860
+
861
+
862
+ logger.info('finalize page');
863
+ j1.setCss();
864
+
865
+ if (j1.appDetected()) {
866
+ // APP mode
867
+ logger.info('mode detected: app');
868
+
869
+ $.when ($.ajax(ep_status))
870
+ .then(function(data) {
871
+ var logger = log4javascript.getLogger('j1.displayPage');
872
+
873
+ user_session = j1.mergeData(user_session, data);
874
+
875
+ user_session.current_page = current_url.pathname;
876
+ j1.writeCookie({
877
+ name: cookie_names.user_session,
878
+ data: user_session
879
+ });
880
+
881
+ providerPermissions = user_session.provider_permissions;
882
+ categoryAllowed = providerPermissions.includes(user_session.page_permission);
883
+
884
+ // Make sure that protected pages are ALWAYS checked for permissions
885
+ // -------------------------------------------------------------------
886
+ if (
887
+ j1.authEnabled() &&
888
+ user_session.page_permission !== 'public' &&
889
+ categoryAllowed === false)
890
+ {
891
+ // redirect to middleware|page_authentication
892
+ if (data.authenticated === 'true') {
893
+ var ep_post_authentication = baseUrl + '/post_authentication';
894
+ window.location.href = ep_post_authentication;
895
+ } else if (j1.authEnabled()) {
896
+ var ep_page_validation = baseUrl + '/page_validation?page=' + window.location.pathname;
897
+ window.location.href = ep_page_validation;
898
+ return false;
899
+ }
900
+ } // END check protected pages
901
+
902
+ setTimeout (function() {
903
+ // Display page
904
+ $('#no_flicker').css('display', 'block');
905
+
906
+ // show|hide cookie icon
907
+ if (user_state.cookies_accepted === 'accepted') {
908
+ // show cookie icon
909
+ logText = 'show cookie icon';
910
+ logger.info(logText);
911
+ $('#quickLinksCookieButton').css('display', 'block');
912
+ } else {
913
+ logText = 'hide cookie icon';
914
+ logger.info(logText);
915
+ // hide cookie icon
916
+ $('#quickLinksCookieButton').css('display', 'none');
917
+ }
918
+
919
+ // show|hide translator icon
920
+ if (translation_enabled) {
921
+ logger.info('translator detected: google');
922
+ logger.info('initialize language selector');
923
+ $('.goog-te-combo').addClass('form-control');
924
+ }
925
+
926
+ // show cc icon
927
+ $('#quickLinksControlCenterButton').css('display', 'block');
928
+
929
+ // show|hide signin|out icon
930
+ if (j1.authEnabled()) {
931
+ if (user_session.authenticated === 'true') {
932
+ // set signout
933
+ logger.info('show signout icon');
934
+ $('#navLinkSignInOut').attr("data-target","#modalOmniSignOut");
935
+ $('#iconSignInOut').removeClass( "mdi-login" ).addClass( "mdi-logout" );
936
+ } else {
937
+ // set signin
938
+ logger.info('show signin icon');
939
+ $('#navLinkSignInOut').attr("data-target","#modalOmniSignIn");
940
+ $('#iconSignInOut').removeClass( "mdi-logout" ).addClass( "mdi-login" );
941
+ }
942
+ logger.info('authentication detected as: ' + user_session.authenticated);
943
+ $('#quickLinksSignInOutButton').css('display', 'block');
944
+ }
945
+
946
+ // If the page requested contains an anchor element,
947
+ // do a smooth scroll to
948
+ j1.scrollTo();
949
+
950
+ if (user_session.previous_page !== user_session.current_page) {
951
+ logText = 'page change detected';
952
+ logger.info(logText);
953
+ logText = 'previous page: ' + user_session.previous_page;
954
+ logger.info(logText);
955
+ logText = 'current page: ' + user_session.current_page;
956
+ logger.info(logText);
957
+ }
958
+
959
+ // update sidebar for changed consent|theme data
960
+ logger.info('update sidebar');
961
+ user_state = j1.readCookie(cookie_names.user_state);
962
+ current_user_data = j1.mergeData(user_session, user_state);
963
+ j1.core.navigator.updateSidebar(current_user_data);
964
+
965
+ // Set|Log status
966
+ state = 'finished';
967
+ logText = 'state: ' + state;
968
+ logger.info(logText);
969
+ logText = 'page finalized successfully';
970
+ logger.info(logText);
971
+
972
+ }, flickerTimeout);
973
+ });
974
+ // END APP mode
975
+ } else {
976
+ // web mode
977
+ setTimeout (function() {
978
+ // Display page
979
+ $('#no_flicker').css('display', 'block');
980
+ logger.info('mode detected: web');
981
+ logger.info('hide signin icon');
982
+ $('#quickLinksSignInOutButton').css('display', 'none');
983
+
984
+ user_session.current_page = current_url.pathname;
985
+ j1.writeCookie({
986
+ name: cookie_names.user_session,
987
+ data: user_session
988
+ });
989
+
990
+ // show|hide translator icon
991
+ if (translation_enabled) {
992
+ logger.info('translator detected: google');
993
+ logger.info('initialize language selector');
994
+ $('.goog-te-combo').addClass('form-control');
995
+ }
996
+
997
+ // show|hide cookie icon
998
+ if (user_state.cookies_accepted === 'accepted') {
999
+ // Display cookie icon
1000
+ logText = 'show cookie icon';
1001
+ logger.info(logText);
1002
+ $('#quickLinksCookieButton').css('display', 'block');
1003
+ } else {
1004
+ logText = 'hide cookie icon';
1005
+ logger.info(logText);
1006
+ // Display cookie icon
1007
+ $('#quickLinksCookieButton').css('display', 'none');
1008
+ }
1009
+
1010
+ // If the page requested contains an anchor element,
1011
+ // do a smooth scroll to
1012
+ j1.scrollTo();
1013
+
1014
+ if (user_session.previous_page !== user_session.current_page) {
1015
+ logText = 'page change detected';
1016
+ logger.info(logText);
1017
+ logText = 'previous page: ' + user_session.previous_page;
1018
+ logger.info(logText);
1019
+ logText = 'current page: ' + user_session.current_page;
1020
+ logger.info(logText);
1021
+ }
1022
+
1023
+ // update sidebar for changed consent|theme data
1024
+ logger.info('update sidebar');
1025
+ user_state = j1.readCookie(cookie_names.user_state);
1026
+ current_user_data = j1.mergeData(user_session, user_state);
1027
+ j1.core.navigator.updateSidebar(current_user_data);
1028
+
1029
+ // Set|Log status
1030
+ state = 'finished';
1031
+ logText = 'state: ' + state;
1032
+ logger.info(logText);
1033
+ logText = 'page finalized successfully';
1034
+ logger.info(logText);
1035
+
1036
+ }, flickerTimeout);
1037
+ } // END WEB mode
1038
+ }, // END displayPage
1039
+
1040
+ // -------------------------------------------------------------------------
1041
+ // Initialize BS Material Design
1042
+ // -------------------------------------------------------------------------
1043
+ // ToDo:
1044
+ initMDB: function (options) {
1045
+ var logger;
1046
+
1047
+ logger = log4javascript.getLogger('j1.initMDB');
1048
+ logText = 'material design is being started';
1049
+ logger.info(logText);
1050
+
1051
+ $('body').bootstrapMaterialDesign();
1052
+ //new WOW().init();
1053
+
1054
+ var logText = 'initializing material design finished';
1055
+ logger.info(logText);
1056
+
1057
+ return true;
1058
+ }, // END initMDB
1059
+
1060
+ // -------------------------------------------------------------------------
1061
+ // Helper functions
1062
+ // -------------------------------------------------------------------------
1063
+
1064
+ // -------------------------------------------------------------------------
1065
+ // Merge two objects (properties) and returns the resulting object
1066
+ // TODO: Improve comment, give synopsis and example
1067
+ // See: https://stackoverflow.com/questions/43109229/merge-default-options-containing-object-with-json-object
1068
+ // -------------------------------------------------------------------------
1069
+ mergeData: function () {
1070
+ var a = [].slice.call(arguments), o = a.shift();
1071
+
1072
+ for(var i=0,l=a.length; i<l; i++){
1073
+ for(var p in a[i]){
1074
+ o[p] = a[i][p];
1075
+ }
1076
+ }
1077
+
1078
+ return o;
1079
+ }, // END mergeData
1080
+
1081
+ // -------------------------------------------------------------------------
1082
+ // returns the last vistited page
1083
+ // -------------------------------------------------------------------------
1084
+ getPrevPage: function () {
1085
+ return previous_page;
1086
+ }, // END getPrevPage
1087
+
1088
+ // -------------------------------------------------------------------------
1089
+ // returns the preferred language taken form window.navigator
1090
+ // See:
1091
+ // https://stackoverflow.com/questions/1043339/javascript-for-detecting-browser-language-preference
1092
+ // -------------------------------------------------------------------------
1093
+ getLanguage: function () {
1094
+ var language = navigator.languages ? navigator.languages[0] : (navigator.language || navigator.userLanguage);
1095
+
1096
+ return language;
1097
+ }, // END getLanguage
1098
+
1099
+ // -------------------------------------------------------------------------
1100
+ // returns the template version taken from site config ( _config.yml)
1101
+ // -------------------------------------------------------------------------
1102
+ getTemplateVersion: function () {
1103
+ return '{{template_version}}';
1104
+ }, // END getTemplateVersion
1105
+
1106
+ // -------------------------------------------------------------------------
1107
+ // Scrolls smooth to any anchor referenced by an page URL
1108
+ // Values for delay|offset are taken from TOC module (Tocbot)
1109
+ // -------------------------------------------------------------------------
1110
+ scrollTo: function () {
1111
+ // Unclear why a offset correction is needed (sometimes ???)
1112
+ var offset_correction = {{toccer_options.headingsOffset}};
1113
+ var offset = {{toccer_options.smoothScrollOffset}};
1114
+ var anchor_id = window.location.href.split("#")[1];
1115
+ var selector;
1116
+ var heading;
1117
+ var re;
1118
+
1119
+ if (anchor_id) {
1120
+ selector = $('.' + anchor_id + ', #' + anchor_id +',[name='+anchor_id+']');
1121
+ heading = selector[0].nodeName;
1122
+
1123
+ // scroll only, if an anchor is given with URL
1124
+ if (selector.length) {
1125
+ var delay = {{toccer_options.smoothScrollDuration}};
1126
+ var scroll_to = parseInt( selector.offset().top - offset - offset_correction );
1127
+ //var scroll_to = selector.offset().top;
1128
+ $('html,body').animate({scrollTop: scroll_to}, delay,
1129
+ function () {
1130
+ // scroll the page one pixel back and forth
1131
+ // to get the right position for the NAV Module (Tocbot)
1132
+ $(window).scrollTop($(window).scrollTop()+1);
1133
+ $(window).scrollTop($(window).scrollTop()-1);
1134
+ });
1135
+ } else {
1136
+ // TODO: to be checked if this else is needed
1137
+ // scroll the page one pixel back and forth
1138
+ // to get the right position for the NAV Module (Tocbot)
1139
+ $(window).scrollTop($(window).scrollTop()+1);
1140
+ $(window).scrollTop($(window).scrollTop()-1);
1141
+ } // selector.length
1142
+ } else {
1143
+ // scroll the page one pixel back and forth
1144
+ // to get the right position for the NAV Module (Tocbot)
1145
+ $(window).scrollTop($(window).scrollTop()+1);
1146
+ $(window).scrollTop($(window).scrollTop()-1);
1147
+ } // END if anchor_id
1148
+
1149
+ return true;
1150
+ }, // END scrollTo
1151
+
1152
+ // -------------------------------------------------------------------------
1153
+ // authEnabled:
1154
+ // Returns the state of the authentication module
1155
+ // -------------------------------------------------------------------------
1156
+ authEnabled: function () {
1157
+ var logger = log4javascript.getLogger('j1.authentication');
1158
+ var authEnabled = {{authentication_options.j1_auth.enabled}}
1159
+
1160
+ return authEnabled;
1161
+ }, // END authEnabled
1162
+
1163
+ // -------------------------------------------------------------------------
1164
+ // appDetected:
1165
+ // Returns true if a web session cookie exists
1166
+ // -------------------------------------------------------------------------
1167
+ appDetected: function () {
1168
+ var user_session = j1.readCookie(cookie_names.user_session);
1169
+ var detected = user_session.mode === 'app' ? true : false;
1170
+
1171
+ return detected;
1172
+ }, // END appDetected
1173
+
1174
+ // -------------------------------------------------------------------------
1175
+ // xhrData:
1176
+ // Load data asychronously using XHR on a DIV container
1177
+ // specified (from options: xhr_data_path)
1178
+ // -------------------------------------------------------------------------
1179
+ xhrData: function (mod, options, status) {
1180
+ var logger = log4javascript.getLogger('j1.xhrData');
1181
+ var state = status;
1182
+ var logText;
1183
+
1184
+ var cb_load_closure = function(mod, id) {
1185
+ return function (responseTxt, statusTxt, xhr) {
1186
+ if ( statusTxt === 'success' ) {
1187
+ if (state) {
1188
+ logger.info('set state for ' +mod+ ' to: ' + state);
1189
+ executeFunctionByName(mod + '.setState', window, state);
1190
+ }
1191
+ logText = 'data loaded successfully on id: ' +id;
1192
+ logger.info(logText);
1193
+ }
1194
+ if ( statusTxt === 'error' ) {
1195
+ state = 'failed';
1196
+ logger.info('set state for ' +mod+ ' to: ' + state);
1197
+ executeFunctionByName(mod + '.setState', window, state);
1198
+ logText = 'loading data failed on id: ' +id+ ', error ' + xhr.status + ': ' + xhr.statusText;
1199
+ logger.error(logText);
1200
+ }
1201
+ };
1202
+ };
1203
+
1204
+ var id = "#" + options.xhr_container_id;
1205
+ var selector = $(id);
1206
+
1207
+ if ( selector.length ) {
1208
+ var modal_html_data_path = options.xhr_data_path + " > *";
1209
+ selector.load( modal_html_data_path, cb_load_closure( mod, id ) );
1210
+ return true;
1211
+ } else {
1212
+ logText = "data not loaded"
1213
+ logger.warn(logText);
1214
+ // Set processing state to 'finished' to complete module load
1215
+ state = 'finished';
1216
+ logger.info('state: ' + state);
1217
+ executeFunctionByName(mod + '.setState', window, state)
1218
+ return false;
1219
+ }
1220
+ }, // END xhrData
1221
+
1222
+ // -------------------------------------------------------------------------
1223
+ // xhrApi: XMLHttpRequest (XHR) based async server API request
1224
+ // Request an REST API at 'url', using verb 'type' of response type 'type'
1225
+ // -------------------------------------------------------------------------
1226
+ xhrApi: function (url, request_type, data_type) {
1227
+ var logger = log4javascript.getLogger('j1.xhrApi');
1228
+ var type = typeof request_type == 'undefined' || request_type == '' ? 'GET' : request_type;
1229
+ var data_type = typeof data_type == 'undefined' || data_type == '' ? 'json' : data_type;
1230
+
1231
+ return $.ajax({
1232
+ url: url,
1233
+ type: type,
1234
+ dataType: data_type,
1235
+ success: function(data) {
1236
+ if (typeof data == 'string') {
1237
+ return JSON.parse(data);
1238
+ }
1239
+ if (typeof data == 'object') {
1240
+ return data;
1241
+ }
1242
+ },
1243
+ error: function(error) {
1244
+ logger.error('xhr request failed: ' + error.statusText);
1245
+ }
1246
+ });
1247
+
1248
+ }, // END xhrApi
1249
+
1250
+ // -------------------------------------------------------------------------
1251
+ // fetchAPI: Fetch (Promise) based async request
1252
+ // Returns the current git state collected from /git endpoint
1253
+ // -------------------------------------------------------------------------
1254
+ fetchAPI: function (params, cbData) {
1255
+ var logger = log4javascript.getLogger('j1.fetchAPI');
1256
+ var cbData = cbData;
1257
+ var parameters = params == '' ? 'all' : params;
1258
+ var url = 'http://localhost:41001/gut';
1259
+
1260
+ async function callAPI() {
1261
+ const URL = url;
1262
+ const fetchResult = fetch(URL)
1263
+ const response = await fetchResult;
1264
+
1265
+ if (response.ok) {
1266
+ const jsonData = await response.json();
1267
+ json_data = JSON.stringify(jsonData, undefined, 2);
1268
+ logText = 'response from fetch received: ' + json_data;
1269
+ logger.info(logText);
1270
+ //console.log(jsonData);
1271
+ } else {
1272
+ throw Error(response.statusText);
1273
+ // logger.error("Fetch request failed: " + response.statusText);
1274
+ }
1275
+ }
1276
+ callAPI();
1277
+
1278
+ return true;
1279
+ }, // END fetchAPI
1280
+
1281
+ // -------------------------------------------------------------------------
1282
+ // getRuntimeData: Returns the j1_runtime data object
1283
+ //
1284
+ // -------------------------------------------------------------------------
1285
+ getRuntimeData: function (data_path) {
1286
+ var logger = log4javascript.getLogger('j1.getRuntimeData');
1287
+ var logText;
1288
+
1289
+ return $.ajax({
1290
+ url: data_path,
1291
+ success: function (contents) {
1292
+ logText = 'data loaded successfully';
1293
+ logger.info(logText);
1294
+ state = 'runtime_data_loaded_success';
1295
+ logger.info('state: ' + state);
1296
+ executeFunctionByName('j1.setState', window, state);
1297
+ },
1298
+ error: function (err) {
1299
+ logText = 'runtime data not loaded: ' + err;
1300
+ logger.warn(logText);
1301
+ state = 'runtime_data_loaded_failed';
1302
+ logger.info('state: ' + state);
1303
+ executeFunctionByName('j1.setState', window, state)
1304
+ return false;
1305
+ }
1306
+ });
1307
+
1308
+ }, // END getRuntimeData
1309
+
1310
+ // -------------------------------------------------------------------------
1311
+ // getColorData: Returns the j1_colors object
1312
+ // Load color definitions from colors_data_path
1313
+ // -------------------------------------------------------------------------
1314
+ getColorData: function (data_path) {
1315
+ var logger = log4javascript.getLogger('j1.getColorData');
1316
+ var j1_colors = {};
1317
+
1318
+ return $.ajax({
1319
+ url: data_path,
1320
+ success: function (data) {
1321
+ var logText = "color data loaded successfully"
1322
+ logger.info(logText);
1323
+ state = 'color_data_loaded_success';
1324
+ logger.info('state: ' + state);
1325
+ executeFunctionByName('j1.setState', window, state);
1326
+
1327
+ if (typeof data == 'string') {
1328
+ j1_colors = JSON.parse(data);
1329
+ }
1330
+ if (typeof data == 'object') {
1331
+ j1_colors = data;
1332
+ }
1333
+ },
1334
+ error: function (data) {
1335
+ var logText = "color data not loaded"
1336
+ logger.warn(logText);
1337
+ state = 'color_data_loaded_failed';
1338
+ logger.info('state: ' + state);
1339
+ executeFunctionByName('j1.setState', window, state)
1340
+ return false;
1341
+ }
1342
+ });
1343
+
1344
+ }, // END getColorData
1345
+
1346
+ // -------------------------------------------------------------------------
1347
+ // setColorData:
1348
+ //
1349
+ // -------------------------------------------------------------------------
1350
+ setColorData: function (color) {
1351
+
1352
+ if ( typeof color != 'undefined' ) {
1353
+ var reHex = /^#[A-Fa-f0-9]+$/;
1354
+ var reRGBA = /^rgba/;
1355
+ var isHex = color.match(reHex);
1356
+ var isRGBA = color.match(reRGBA);
1357
+
1358
+ if ( typeof j1.colors[color] != 'undefined' ) {
1359
+ return j1.colors[color];
1360
+ } else if (isHex) {
1361
+ return color;
1362
+ } else if (isRGBA) {
1363
+ return color;
1364
+ } else {
1365
+ return false;
1366
+ }
1367
+ } else {
1368
+ return false;
1369
+ }
1370
+
1371
+ }, // END setColorData
1372
+
1373
+ // -------------------------------------------------------------------------
1374
+ // getFontSizeData: Returns the j1_font_sizes object
1375
+ // Load loadFontSize definitions from font_size_data_path
1376
+ // -------------------------------------------------------------------------
1377
+ getFontSizeData: function (data_path) {
1378
+ var logger = log4javascript.getLogger('j1.getFontSizeData');
1379
+ var j1_font_sizes = {};
1380
+
1381
+ return $.ajax({
1382
+ url: data_path,
1383
+ success: function (data) {
1384
+ var logText = "font size data loaded successfully"
1385
+ logger.info(logText);
1386
+ state = 'fontsize_data_loaded_success';
1387
+ logger.info('state: ' + state);
1388
+ executeFunctionByName('j1.setState', window, state);
1389
+
1390
+ if (typeof data == 'string') {
1391
+ j1_font_sizes = JSON.parse(data);
1392
+ }
1393
+ if (typeof data == 'object') {
1394
+ j1_font_sizes = data;
1395
+ }
1396
+ },
1397
+ error: function (data) {
1398
+ var logText = "font size data not loaded"
1399
+ logger.warn(logText);
1400
+ state = 'fontsize_data_loaded_failed';
1401
+ logger.info('state: ' + state);
1402
+ executeFunctionByName('j1.setState', window, state)
1403
+ return false;
1404
+ }
1405
+ });
1406
+
1407
+ }, // END getFontSizeData
1408
+
1409
+ // -------------------------------------------------------------------------
1410
+ // getFontSize: Returns the CSS value for a 'logical' fontsize
1411
+ // out of the j1_font_sizes object
1412
+ // -------------------------------------------------------------------------
1413
+ setFontSize: function (size) {
1414
+
1415
+ if ( typeof size != 'undefined' ) {
1416
+ var reCSS = /\bpx\b|\brem\b|\bem\b|\%|\binherit\b|\binitial\b|\bunset\b/;
1417
+ var isCSS = size.match(reCSS);
1418
+
1419
+ // if ( typeof j1_font_sizes[size] != "undefined" ) {
1420
+ if ( typeof j1.fonts[size] != "undefined" ) {
1421
+ return j1.fonts[size];
1422
+ } else if (isCSS) {
1423
+ return size;
1424
+ } else {
1425
+ return false;
1426
+ }
1427
+ } else {
1428
+ return false;
1429
+ }
1430
+
1431
+ }, // END getFontSize
1432
+
1433
+ // -------------------------------------------------------------------------
1434
+ // loadMessageCatalog
1435
+ // Loads the message catalog object
1436
+ // -------------------------------------------------------------------------
1437
+ getMessageCatalog: function (data_path /*, request_type, data_type*/) {
1438
+ var logger = log4javascript.getLogger('j1.loadMessageCatalog');
1439
+ var message_catalog = {};
1440
+ var type = typeof request_type == 'undefined' || request_type == '' ? 'GET' : request_type;
1441
+ var data_type = typeof data_type == 'undefined' || data_type == '' ? 'text' : data_type;
1442
+ var messageData;
1443
+ var logBase;
1444
+ var logText;
1445
+ var property;
1446
+
1447
+ return $.ajax({
1448
+ url: data_path,
1449
+ type: type,
1450
+ dataType: data_type,
1451
+ success: function (data) {
1452
+ messageData = yaml.safeLoad(data);
1453
+ for (property in messageData) {
1454
+ if (messageData.hasOwnProperty(property)) {
1455
+ message_catalog[property] = {};
1456
+ messageData[property].forEach((element) => {
1457
+ var key = Object.keys(element)[0];
1458
+ var value = element[Object.keys(element)[0]];
1459
+ message_catalog[property][key] = value;
1460
+ });
1461
+ }
1462
+ }
1463
+ j1.messages = message_catalog;
1464
+ logBase = message_catalog.info.getData.message
1465
+ logText = logBase.text + logBase.message_catalog + logBase.finished;
1466
+ logger.info(logText);
1467
+ },
1468
+ error: function(data) {
1469
+ var json_data = JSON.stringify(data, undefined, 2);
1470
+ logBase = message_catalog.error.getData.message;
1471
+ logText = logBase.text + logBase.xhr + ': ' + json_data
1472
+ logger.error(logText);
1473
+ }
1474
+ });
1475
+
1476
+ }, // END getMessageCatalog
1477
+
1478
+ // -------------------------------------------------------------------------
1479
+ // readCookie:
1480
+ //
1481
+ // -------------------------------------------------------------------------
1482
+ readCookie: function (name) {
1483
+ var data;
1484
+ var data_json;
1485
+ data_json = window.atob(Cookies.get(name));
1486
+ data = JSON.parse(data_json);
1487
+
1488
+ if (data) {
1489
+ return data;
1490
+ } else {
1491
+ return false;
1492
+ }
1493
+ }, // END readCookie
1494
+
1495
+ // -------------------------------------------------------------------------
1496
+ // writeCookie:
1497
+ // Write 'data' to a cookie 'name'. If not exists, the cookie gets
1498
+ // created. Returns 'true' if cookie was written, otherwise 'false'.
1499
+ //
1500
+ writeCookie: function (options /*name, data, [path, expires, secure]*/) {
1501
+ var defaults = {
1502
+ name: '',
1503
+ data: {},
1504
+ path: '/',
1505
+ expires: 0,
1506
+ secure: false
1507
+ };
1508
+ var settings = $.extend(defaults, options);
1509
+
1510
+ var epoch = Math.floor(Date.now()/1000);
1511
+ var timestamp = moment.unix(epoch).format('YYYY-MM-DD hh:mm:ss');
1512
+ var cookie_data = {};
1513
+ var data_json;
1514
+ var data_encoded;
1515
+
1516
+ if (j1.existsCookie(settings.name)) {
1517
+ cookie_data = j1.readCookie(settings.name);
1518
+ cookie_data.timestamp = timestamp;
1519
+ cookie_data = j1.mergeData(cookie_data, settings.data);
1520
+ data_json = JSON.stringify( cookie_data );
1521
+ data_encoded = window.btoa(data_json);
1522
+ if (settings.expires > 0) {
1523
+ Cookies.set(settings.name, data_encoded, { expires: settings.expires });
1524
+ } else {
1525
+ Cookies.set(settings.name, data_encoded);
1526
+ }
1527
+ } else {
1528
+ cookie_data = settings.data
1529
+ data_json = JSON.stringify( settings.data );
1530
+ data_encoded = window.btoa(data_json);
1531
+ if (settings.expires > 0) {
1532
+ Cookies.set(settings.name, data_encoded, { expires: settings.expires });
1533
+ } else {
1534
+ Cookies.set(settings.name, data_encoded);
1535
+ }
1536
+ }
1537
+
1538
+ if (j1.existsCookie(settings.name)) {
1539
+ return cookie_data;
1540
+ } else {
1541
+ return false;
1542
+ }
1543
+
1544
+ }, // END writeCookie
1545
+
1546
+ // -------------------------------------------------------------------------
1547
+ // Clears all given cookies by name (except cookies set to httpOnly).
1548
+ // For all cookies the expire date is set in the past, those cookies
1549
+ // are 'session' cookies. All session cookies are deleted (automatically)
1550
+ // by the browser if the last session (browser window) is closed.
1551
+ // See: https://stackoverflow.com/questions/179355/clearing-all-cookies-with-javascript
1552
+ // -------------------------------------------------------------------------
1553
+ removeCookie: function (options /*name [, path]*/) {
1554
+ var cookieExists;
1555
+ var defaults = {
1556
+ name: '',
1557
+ path: '/'
1558
+ };
1559
+ var settings = $.extend(defaults, options);
1560
+
1561
+ Cookies.remove(settings.name, { path: settings.path });
1562
+
1563
+ }, // END removeCookie
1564
+
1565
+ // -------------------------------------------------------------------------
1566
+ // Clears all given cookies by name (except cookies set to httpOnly).
1567
+ // For all cookies the expire date is set in the past, those cookies
1568
+ // are 'session' cookies. All session cookies are deleted (automatically)
1569
+ // by the browser if the last session (browser window) is closed.
1570
+ // See: https://stackoverflow.com/questions/179355/clearing-all-cookies-with-javascript
1571
+ // -------------------------------------------------------------------------
1572
+ deleteCookie: function (options) {
1573
+ var name = options;
1574
+ var all_cookies = document.cookie.split("; ");
1575
+
1576
+ if ( name === 'all' ) {
1577
+ for (var c = 0; c < all_cookies.length; c++) {
1578
+ var d = window.location.hostname.split(".");
1579
+ while (d.length > 0) {
1580
+ var cookieBase = encodeURIComponent(all_cookies[c].split(";")[0].split("=")[0]) + '=; expires=Thu, 01-Jan-1970 00:00:01 GMT; domain=' + d.join('.') + ' ;path=';
1581
+ var p = location.pathname.split('/');
1582
+ document.cookie = cookieBase + '/';
1583
+ while (p.length > 0) {
1584
+ document.cookie = cookieBase + p.join('/');
1585
+ p.pop();
1586
+ };
1587
+ d.shift();
1588
+ }
1589
+ }
1590
+ } else {
1591
+ document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
1592
+ }
1593
+
1594
+ return true;
1595
+ }, // END deleteCookie
1596
+
1597
+ // -------------------------------------------------------------------------
1598
+ // returns true if a given cookie exists
1599
+ // -------------------------------------------------------------------------
1600
+ existsCookie: function (name) {
1601
+ var dc = document.cookie;
1602
+ var prefix = name + "=";
1603
+ var begin = dc.indexOf("; " + prefix);
1604
+ var end = dc.length; // default to end of the string
1605
+ var cookieExists = false;
1606
+ var cookieContent = '';
1607
+
1608
+ // found, and not in first position
1609
+ if (begin !== -1) {
1610
+ // exclude the "; "
1611
+ begin += 2;
1612
+ } else {
1613
+ //see if cookie is in first position
1614
+ begin = dc.indexOf(prefix);
1615
+ // not found at all or found as a portion of another cookie name
1616
+ if (begin === -1 || begin !== 0 ) return null;
1617
+ }
1618
+
1619
+ // if ";" is found somewhere after the prefix position then "end" is
1620
+ // that position, otherwise it defaults to the end of the string
1621
+ if (dc.indexOf(";", begin) !== -1) {
1622
+ end = dc.indexOf(";", begin);
1623
+ }
1624
+
1625
+ cookieContent = decodeURI(dc.substring(begin + prefix.length, end) ).replace(/"/g, '');
1626
+ cookieExists = cookieContent.length ? true : false;
1627
+
1628
+ return cookieExists;
1629
+ }, // END existsCookie
1630
+
1631
+ // -------------------------------------------------------------------------
1632
+ // Resolve MACROs
1633
+ //
1634
+ // See:
1635
+ // https://stackoverflow.com/questions/5376431/wildcards-in-jquery-selectors
1636
+ // https://stackoverflow.com/questions/16400072/jquery-each-only-affects-last-element
1637
+ // https://dzone.com/articles/why-does-javascript-loop-only-use-last-value
1638
+ // https://stackoverflow.com/questions/179713/how-to-change-the-href-for-a-hyperlink-using-jquery
1639
+ // https://stackoverflow.com/questions/5223/length-of-a-javascript-object
1640
+ // -------------------------------------------------------------------------
1641
+ resolveMacros: function (user_data) {
1642
+ var logger = log4javascript.getLogger('j1.resolveMacros');
1643
+
1644
+ if (Object.keys(user_data).length) {
1645
+ $('[id^=macro-]').each(function() {
1646
+
1647
+ $('#macro-provider').each(function() {
1648
+ var $this = $(this);
1649
+ var $html = $this.html();
1650
+ $this.html($html.replace('??provider', user_data.provider));
1651
+ this.href = this.href.replace(/.*\/??provider-site-url/, user_data.provider_site_url);
1652
+ });
1653
+ $('#macro-user-name').each(function() {
1654
+ var $this = $(this);
1655
+ var $html = $this.html();
1656
+ $this.html($html.replace('??user-name', user_data.user_name));
1657
+ this.href = this.href.replace(/.*\/??provider_member_url/, user_data.provider_member_url);
1658
+ });
1659
+ $('#macro-provider-permissions').each(function() {
1660
+ var $this = $(this);
1661
+ var $html = $this.html();
1662
+ $this.html($html.replace('??provider-permissions', user_data.provider_permissions));
1663
+ this.href = this.href.replace(/.*\/??provider_member_url/, user_data.provider_member_url);
1664
+ });
1665
+ $('#macro-provider-membership').each(function() {
1666
+ var $this = $(this);
1667
+ var $html = $this.html();
1668
+ $this.html($html.replace('??provider-membership', user_data.provider_membership));
1669
+ this.href = this.href.replace(/.*\/??provider_member_url/, user_data.provider_member_url);
1670
+ });
1671
+ $('#macro-cookie-state').each(function() {
1672
+ var $this = $(this);
1673
+ var $html = $this.html();
1674
+ $this.html($html.replace('??cookie-state', user_data.cookies_accepted));
1675
+ this.href = this.href.replace(/.*\/??provider_privacy_url/, user_data.provider_privacy_url);
1676
+ });
1677
+ $('#macro-theme-name').each(function() {
1678
+ var $this = $(this);
1679
+ var $html = $this.html();
1680
+ $this.html($html.replace('??theme-name', user_data.theme_name));
1681
+ });
1682
+ $('#macro-theme-author').each(function() {
1683
+ var $this = $(this);
1684
+ var $html = $this.html();
1685
+ $this.html($html.replace('??theme-author', user_data.theme_author));
1686
+ this.href = this.href.replace(/.*\/??theme-author-url/, user_data.theme_author_url);
1687
+ });
1688
+ $('#macro-theme-version').each(function() {
1689
+ var $this = $(this);
1690
+ var $html = $this.html();
1691
+ $this.html($html.replace('??theme-version', user_data.theme_version));
1692
+ });
1693
+
1694
+ });
1695
+ return true;
1696
+ } else {
1697
+ logger.error('no user data provided');
1698
+ return false;
1699
+ }
1700
+
1701
+ }, // END resolveMacros
1702
+
1703
+ // -------------------------------------------------------------------------
1704
+ // Update MACROs
1705
+ // Update the values, NOT the placeholders
1706
+ // -------------------------------------------------------------------------
1707
+ updateMacros: function (user_data) {
1708
+ var logger = log4javascript.getLogger('j1.updateMacros');
1709
+
1710
+ if (Object.keys(user_data).length) {
1711
+ $('[id^=macro-]').each(function() {
1712
+
1713
+ $('#macro-provider').each(function() {
1714
+ var $this = $(this);
1715
+ var $html = $this.html();
1716
+ $this.html($html.replace(/Provider:.*/, 'Provider: ' + user_data.provider));
1717
+ $('#macro-provider').attr("href", user_data.provider_site_url);
1718
+ });
1719
+ $('#macro-user-name').each(function() {
1720
+ var $this = $(this);
1721
+ var $html = $this.html();
1722
+ $this.html($html.replace(/User:.*/, 'User: ' + user_data.user_name));
1723
+ $('#macro-user-name').attr("href", user_data.provider_member_url);
1724
+ });
1725
+ $('#macro-provider-permissions').each(function() {
1726
+ var $this = $(this);
1727
+ var $html = $this.html();
1728
+ // $this.html($html.replace(/public|protected|private|blocked/, user_data.provider_permissions));
1729
+ $this.html($html.replace(/public.*|protected.*|private.*|blocked.*/, user_data.provider_permissions));
1730
+ $('#macro-provider-permissions').attr("href", user_data.provider_member_url);
1731
+ });
1732
+ $('#macro-provider-membership').each(function() {
1733
+ var $this = $(this);
1734
+ var $html = $this.html();
1735
+ $this.html($html.replace(/guest|member/, user_data.provider_membership));
1736
+ $('#macro-provider-membership').attr("href", user_data.provider_member_url);
1737
+ });
1738
+ $('#macro-cookie-state').each(function() {
1739
+ var $this = $(this);
1740
+ var $html = $this.html();
1741
+ $this.html($html.replace(/accepted|declined|pending/, user_data.cookies_accepted));
1742
+ $('#macro-cookie-state').attr("href", user_data.provider_privacy_url);
1743
+ });
1744
+
1745
+ });
1746
+ return true;
1747
+ } else {
1748
+ logger.error('no user data provided');
1749
+ return false;
1750
+ }
1751
+
1752
+ }, // END updateMacros
1753
+
1754
+ // -------------------------------------------------------------------------
1755
+ // getMessage
1756
+ // Get a log message from the log message catalog object
1757
+ // -------------------------------------------------------------------------
1758
+ getMessage: function (level, message, property) {
1759
+ var message = j1.messages[level][message]["message"][property];
1760
+
1761
+ return message;
1762
+ }, // END getMessage
1763
+
1764
+ // -------------------------------------------------------------------------
1765
+ // logger
1766
+ // Log a message
1767
+ // -------------------------------------------------------------------------
1768
+ logger: function (logger, level, message) {
1769
+ var logger = log4javascript.getLogger(logger);
1770
+
1771
+ logger[level](message);
1772
+
1773
+ return true;
1774
+ }, // END logger
1775
+
1776
+ // -------------------------------------------------------------------------
1777
+ // getBaseUrl
1778
+ // -------------------------------------------------------------------------
1779
+ // getBaseUrl: function () {
1780
+ // var myUrl = window.location.href;
1781
+ // var ua = platform.name.toLowerCase();
1782
+ // var reURL = new RegExp('(http[s]?:\/\/)?([^\/]+)(.*)');
1783
+ // var baseUrl;
1784
+ // //var reGroups;
1785
+ //
1786
+ // // NOTE: named capture groups NOT supported by FF + IE11
1787
+ // // if ( ua === 'chrome' ) {
1788
+ // // reURL = new RegExp('(?<prot>http[s]?:\/\/)?(?<host>[^\/]+)(?<path>.*)');
1789
+ // // reGroups = myUrl.match(reURL).groups;
1790
+ // // baseUrl = reGroups.prot + reGroups.host;
1791
+ // // } else {
1792
+ // // reURL = new RegExp('(http[s]?:\/\/)?([^\/]+)(.*)');
1793
+ // // myUrl.match(reURL);
1794
+ // // baseUrl = RegExp.$1 + RegExp.$2 + RegExp.$3;
1795
+ // // }
1796
+ //
1797
+ // myUrl.match(reURL);
1798
+ // // baseUrl = RegExp.$1 + RegExp.$2 + RegExp.$3;
1799
+ // baseUrl = RegExp.$1 + RegExp.$2;
1800
+ //
1801
+ // return baseUrl;
1802
+ // }, // END getBaseUrl
1803
+
1804
+ // -------------------------------------------------------------------------
1805
+ // getPath
1806
+ // See: https://stackoverflow.com/questions/27745/getting-parts-of-a-url-regex
1807
+ // -------------------------------------------------------------------------
1808
+ // getPath: function ( myUrl ) {
1809
+ // var url = new parseURL(myUrl)
1810
+ // // var reURL = new RegExp('(http[s]?:\/\/)?([^\/]+)(.*)');
1811
+ // // var path;
1812
+ // //
1813
+ // // myUrl.match(reURL);
1814
+ // path = url.path;
1815
+ //
1816
+ // return path;
1817
+ // }, // END getPath
1818
+
1819
+ // -------------------------------------------------------------------------
1820
+ // Send message
1821
+ // -------------------------------------------------------------------------
1822
+ sendMessage: function ( sender, receiver, message ) {
1823
+ var logger = log4javascript.getLogger('j1.sendMessage');
1824
+ // var json_message = JSON.stringify(message, undefined, 2); // multiline
1825
+ var json_message = JSON.stringify(message);
1826
+
1827
+ if ( receiver === 'j1' ) {
1828
+ logText = 'send message from ' + sender + ' to' + receiver + ': ' + json_message;
1829
+ logger.debug(logText);
1830
+ executeFunctionByName('j1' + '.messageHandler', window, sender, message)
1831
+ } else {
1832
+ logText = 'send message from ' + sender + ' to ' + receiver + ': ' + json_message;
1833
+ logger.debug(logText);
1834
+ //executeFunctionByName('j1.' + receiver + '.messageHandler', window, sender, message)
1835
+ executeFunctionByName(receiver + '.messageHandler', window, sender, message)
1836
+ }
1837
+
1838
+ }, // END sendMessage
1839
+
1840
+ // -------------------------------------------------------------------------
1841
+ // messageHandler: MessageHandler for J1 CookieConsent module
1842
+ // Manage messages send from other J1 modules
1843
+ // -------------------------------------------------------------------------
1844
+ messageHandler: function ( sender, message ) {
1845
+ // var json_message = JSON.stringify(message, undefined, 2); // multiline
1846
+ var json_message = JSON.stringify(message);
1847
+
1848
+ logText = 'received message from ' + sender + ': ' + json_message;
1849
+ logger.debug(logText);
1850
+
1851
+ // -----------------------------------------------------------------------
1852
+ // Process commands|actions
1853
+ // -----------------------------------------------------------------------
1854
+ if ( message.type === 'command' && message.action === 'module_initialized' ) {
1855
+ _this.setState('finished');
1856
+ logger.info(message.text);
1857
+ }
1858
+
1859
+ //
1860
+ // Place handling of other command|action here
1861
+ //
1862
+
1863
+ return true;
1864
+ }, // END messageHandler
1865
+
1866
+ // -------------------------------------------------------------------------
1867
+ // getStyleValue:
1868
+ // returns the value of a style from a css class definition
1869
+ // example: j1.getStyleValue('bg-primary', 'background-color')
1870
+ getStyleValue: function (className, style) {
1871
+ var elementId = 'test-' + className,
1872
+ testElement = document.getElementById(elementId),
1873
+ val;
1874
+
1875
+ if (testElement === null) {
1876
+ testElement = document.createElement('div');
1877
+ testElement.className = className;
1878
+ testElement.style.display = 'none';
1879
+ document.body.appendChild(testElement);
1880
+ }
1881
+ val = $(testElement).css(style);
1882
+ document.body.removeChild(testElement);
1883
+
1884
+ return val;
1885
+ }, // END getStyleValue
1886
+
1887
+ // -------------------------------------------------------------------------
1888
+ // Returns the names of cookies used for J1 Template
1889
+ // -------------------------------------------------------------------------
1890
+ getCookieNames: function () {
1891
+ return cookie_names;
1892
+ }, // end getCookieNames
1893
+
1894
+ // -------------------------------------------------------------------------
1895
+ // Set dynamic styles
1896
+ // -------------------------------------------------------------------------
1897
+ setCss: function () {
1898
+ var logger = log4javascript.getLogger('j1.setCss');
1899
+ var bg_primary = j1.getStyleValue('bg-primary', 'background-color');
1900
+
1901
+ logger.info('set color scheme for selected theme');
1902
+
1903
+ // globals
1904
+ // -----------------------------------------------------------------------
1905
+ $('head').append('<style>.g-bg-primary { background-color: ' +bg_primary+ ' !important; }</style>');
1906
+
1907
+ // mdi icons
1908
+ // -----------------------------------------------------------------------
1909
+ $('head').append('<style>.iconify-md-bg-primary { color: ' +bg_primary+ ' !important; }</style>');
1910
+ $('head').append('<style>.fa-md-bg-primary { color: ' +bg_primary+ ' !important; }</style>');
1911
+ $('head').append('<style>.fas-md-bg-primary { color: ' +bg_primary+ ' !important; }</style>');
1912
+ $('head').append('<style>.mdi-md-bg-primary { color: ' +bg_primary+ ' !important; }</style>');
1913
+
1914
+ // asciidoc
1915
+ // -----------------------------------------------------------------------
1916
+ var admonitionblock_note_color = bg_primary;
1917
+ var admonitionblock_tip_color = j1.getStyleValue('btn-success', 'background-color');
1918
+ var admonitionblock_important_color = j1.getStyleValue('btn-warning', 'background-color');
1919
+ var admonitionblock_warning_color = j1.getStyleValue('icon-warning', 'color');
1920
+ var admonitionblock_caution_color = j1.getStyleValue('btn-danger', 'background-color');
1921
+
1922
+ $('head').append('<style>.icon-note { color: ' +bg_primary+ ' !important; }</style>');
1923
+ $('head').append('<style>.icon-tip { color: ' +admonitionblock_tip_color+ ' !important; }</style>');
1924
+ $('head').append('<style>.icon-important { color: ' +admonitionblock_important_color+ ' !important; }</style>');
1925
+ $('head').append('<style>.icon-warning { color: ' +admonitionblock_warning_color+ ' !important; }</style>');
1926
+ $('head').append('<style>.icon-caution { color: ' +admonitionblock_caution_color+ ' !important; }</style>');
1927
+
1928
+ // bs base styles
1929
+ // -----------------------------------------------------------------------
1930
+ $('head').append('<style>code { color: ' +bg_primary+ ' !important; }</style>');
1931
+
1932
+ // bs tool tips
1933
+ // -----------------------------------------------------------------------
1934
+ $('head').append('<style>.tooltip-inner { background-color: ' +bg_primary+ ' !important; }</style>');
1935
+
1936
+ // asciidoc results viewer
1937
+ // -----------------------------------------------------------------------
1938
+ $('head').append('<style>.btn-viewer:hover { background-color: ' +bg_primary+ ' !important; }</style>');
1939
+
1940
+ // clipboard
1941
+ // -----------------------------------------------------------------------
1942
+ $('head').append('<style>.btn-clipboard:hover { background-color: ' +bg_primary+ ' !important; }</style>');
1943
+
1944
+ // extended modals
1945
+ // -----------------------------------------------------------------------
1946
+ var tabs_pills_link_color_active = j1.setColorData('md_blue'); // j1.getStyleValue('btn-info', 'background-color');
1947
+ var tabs_pills_link_color_hover = j1.setColorData('md_gray_300'); // j1.getStyleValue('btn-secondary', 'background-color');
1948
+
1949
+ // nav module
1950
+ // -----------------------------------------------------------------------
1951
+ $('head').append('<style>.nav-link:hover { background-color: ' +tabs_pills_link_color_hover+ ' !important; }</style>');
1952
+ $('head').append('<style>.nav-link.active { background-color: ' +tabs_pills_link_color_active+ ' !important; }</style>');
1953
+
1954
+ return true;
1955
+ }, // END setCss
1956
+
1957
+ // -------------------------------------------------------------------------
1958
+ // Set the current (processing) state of the module
1959
+ // -------------------------------------------------------------------------
1960
+ setState: function (stat) {
1961
+ state= stat;
1962
+ //j1.state stat;
1963
+ }, // end setState
1964
+
1965
+ // -------------------------------------------------------------------------
1966
+ // Returns the current (processing) state of the module
1967
+ // -------------------------------------------------------------------------
1968
+ getState: function () {
1969
+ // return j1.state;
1970
+ return state;
1971
+ }, // end getState
1972
+
1973
+ // -------------------------------------------------------------------------
1974
+ // Set the current mode of the site (web|app)
1975
+ // -------------------------------------------------------------------------
1976
+ setMode: function (mod) {
1977
+ mode = mod;
1978
+ }, // END setMode
1979
+
1980
+ // -------------------------------------------------------------------------
1981
+ // Return the current mode of the site (web|app)
1982
+ // -------------------------------------------------------------------------
1983
+ getMode: function () {
1984
+ return mode;
1985
+ }, // END getMode
1986
+
1987
+ // -------------------------------------------------------------------------
1988
+ // getUserAgent
1989
+ // Return the name of the web browser
1990
+ // -------------------------------------------------------------------------
1991
+ checkUserAgent: function (ua_name) {
1992
+ if (navigator.userAgent.search(ua_name) >= 0) {
1993
+ return true;
1994
+ } else {
1995
+ return false;
1996
+ }
1997
+ }, // END checkUserAgent
1998
+
1999
+ // -------------------------------------------------------------------------
2000
+ // Return always true (for testing purposes)
2001
+ // -------------------------------------------------------------------------
2002
+ getTrue: function () {
2003
+ return true;
2004
+ }, // END isTrue
2005
+
2006
+ // -------------------------------------------------------------------------
2007
+ // Return always false (for testing purposes)
2008
+ // -------------------------------------------------------------------------
2009
+ getFalse: function () {
2010
+ return false;
2011
+ }, // END isTrue
2012
+
2013
+ // -------------------------------------------------------------------------
2014
+ // Return users to their browser homepage
2015
+ // -------------------------------------------------------------------------
2016
+ goHome: function () {
2017
+ // most browsers
2018
+ if (typeof window.home == 'function') {
2019
+ window.home();
2020
+ } else if (document.all) {
2021
+ // for IE
2022
+ window.location.href = "about:home";
2023
+ } else {
2024
+ window.location.href = "about:blank";
2025
+ }
2026
+ } // END gohome
2027
+
2028
+ } // END j1 (return)
2029
+ }) (j1, window);
2030
+
2031
+ {% endcapture %}
2032
+
2033
+ {{ cache | strip_empty_lines }}
2034
+ {% assign cache = nil %}