j1-template 2023.5.2 → 2023.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. checksums.yaml +4 -4
  2. data/_includes/themes/j1/layouts/content_generator_news_panel_posts.html +11 -9
  3. data/_includes/themes/j1/layouts/content_generator_post.html +8 -6
  4. data/_includes/themes/j1/procedures/global/create_word_cloud.proc +1 -1
  5. data/_includes/themes/j1/procedures/layouts/module_writer.proc +1 -1
  6. data/_includes/themes/j1/procedures/posts/collate_timeline.proc +4 -4
  7. data/_includes/themes/j1/procedures/posts/pager.proc +1 -1
  8. data/_layouts/_home.html +88 -0
  9. data/_layouts/home.html +1 -1
  10. data/assets/data/banner.html +7 -7
  11. data/assets/data/panel.html +37 -25
  12. data/assets/data/quicklinks.html +40 -30
  13. data/assets/data/speak2me.html +219 -0
  14. data/assets/data/translator.html +32 -4
  15. data/assets/themes/j1/adapter/js/speak2me.js +425 -0
  16. data/assets/themes/j1/adapter/js/translator.js +10 -2
  17. data/assets/themes/j1/core/css/icon-fonts/mdib.css +21 -0
  18. data/assets/themes/j1/core/css/icon-fonts/mdib.min.css +1 -1
  19. data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.css +34 -40
  20. data/assets/themes/j1/core/css/themes/bootstrap/bootstrap.min.css +2 -2
  21. data/assets/themes/j1/core/css/themes/unodark/bootstrap.css +77 -57
  22. data/assets/themes/j1/core/css/themes/unodark/bootstrap.min.css +2 -2
  23. data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +176 -42
  24. data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +3 -3
  25. data/assets/themes/j1/core/js/template.js +1658 -0
  26. data/assets/themes/j1/core/js/template.min.js +11 -5
  27. data/assets/themes/j1/core/js/template.min.js.map +1 -1
  28. data/assets/themes/j1/modules/speak2me/LICENSE +21 -0
  29. data/assets/themes/j1/modules/speak2me/js/speak2me.js +947 -0
  30. data/assets/themes/j1/modules/speak2me/js/speak2me.min.js +26 -0
  31. data/assets/themes/j1/modules/translator/js/translator.js +30 -13
  32. data/assets/themes/j1/modules/translator/js/translator.min.js +1 -1
  33. data/lib/j1/version.rb +1 -1
  34. data/lib/starter_web/Gemfile +5 -5
  35. data/lib/starter_web/README.md +5 -5
  36. data/lib/starter_web/_config.yml +12 -44
  37. data/lib/starter_web/_data/blocks/banner.yml +7 -6
  38. data/lib/starter_web/_data/blocks/panel.yml +37 -39
  39. data/lib/starter_web/_data/layouts/home.yml +1 -1
  40. data/lib/starter_web/_data/modules/advertising.yml +10 -88
  41. data/lib/starter_web/_data/modules/buymeacoffee.yml +30 -0
  42. data/lib/starter_web/_data/modules/defaults/advertising.yml +3 -1
  43. data/lib/starter_web/_data/modules/defaults/blog_navigator.yml +97 -164
  44. data/lib/starter_web/_data/modules/defaults/buymeacoffee.yml +30 -0
  45. data/lib/starter_web/_data/modules/defaults/navigator.yml +8 -4
  46. data/lib/starter_web/_data/modules/defaults/speak2me.yml +72 -0
  47. data/lib/starter_web/_data/modules/scroller.yml +1 -1
  48. data/lib/starter_web/_data/modules/speak2me.yml +33 -0
  49. data/lib/starter_web/_data/resources.yml +24 -1
  50. data/lib/starter_web/_data/templates/feed.xml +1 -1
  51. data/lib/starter_web/_includes/google/static/{google_ad_5128488466.html → google_ad__your-slot-id.html} +1 -1
  52. data/lib/starter_web/_plugins/asciidoctor/callout.rb +1 -1
  53. data/lib/starter_web/_plugins/asciidoctor/carousel-block.rb +2 -2
  54. data/lib/starter_web/_plugins/asciidoctor/gallery-block.rb +2 -2
  55. data/lib/starter_web/_plugins/asciidoctor/gist-block.rb +2 -2
  56. data/lib/starter_web/_plugins/asciidoctor/google-ad-block.rb +1 -1
  57. data/lib/starter_web/_plugins/asciidoctor/lightbox-block.rb +2 -7
  58. data/lib/starter_web/_plugins/asciidoctor/masonry-block.rb +2 -3
  59. data/lib/starter_web/_plugins/asciidoctor/masterslider-block.rb +2 -2
  60. data/lib/starter_web/_plugins/asciidoctor/mdib-icon-inline.rb +43 -0
  61. data/lib/starter_web/_plugins/asciidoctor/mdil-icon-inline.rb +1 -1
  62. data/lib/starter_web/_plugins/asciidoctor/range-slider-block.rb +1 -1
  63. data/lib/starter_web/_plugins/asciidoctor/slick-block.rb +2 -2
  64. data/lib/starter_web/_plugins/asciidoctor/textbook-block.rb +1 -1
  65. data/lib/starter_web/_plugins/filter/liquify.rb +22 -22
  66. data/lib/starter_web/_plugins/index/lunr.rb +1 -1
  67. data/lib/starter_web/assets/images/collections/books/biography/a_life_in_questions.jpg +0 -0
  68. data/lib/starter_web/assets/images/collections/books/biography/becoming.jpg +0 -0
  69. data/lib/starter_web/assets/images/collections/books/biography/born_to_run.jpg +0 -0
  70. data/lib/starter_web/assets/images/collections/books/biography/forty_autumns.jpg +0 -0
  71. data/lib/starter_web/assets/images/collections/books/biography/not_dead_yet.jpg +0 -0
  72. data/lib/starter_web/assets/images/collections/books/biography/the_princess_diarist.jpg +0 -0
  73. data/lib/starter_web/assets/images/collections/books/biography/when_breath_becomes_air.jpg +0 -0
  74. data/lib/starter_web/assets/images/collections/books/fantasy/harry-potter-deathly-hallows.jpg +0 -0
  75. data/lib/starter_web/assets/images/collections/books/fantasy/harry-potter-philosophers-stone.jpg +0 -0
  76. data/lib/starter_web/assets/images/collections/books/fantasy/mistborn-trilogy.jpg +0 -0
  77. data/lib/starter_web/assets/images/collections/books/fantasy/ready-player-one.jpg +0 -0
  78. data/lib/starter_web/assets/images/collections/books/fantasy/sword-of-destiny.jpg +0 -0
  79. data/lib/starter_web/assets/images/collections/books/fantasy/terry-pratchet-diary.jpg +0 -0
  80. data/lib/starter_web/assets/images/collections/books/romance/breath-of-snow-and-ashes.jpg +0 -0
  81. data/lib/starter_web/assets/images/collections/books/romance/it-ends-with-us.jpg +0 -0
  82. data/lib/starter_web/assets/images/collections/books/romance/outlander-novel.jpg +0 -0
  83. data/lib/starter_web/assets/images/collections/books/romance/outlander-short-story.jpg +0 -0
  84. data/lib/starter_web/assets/images/collections/books/romance/the-fiery-cross.jpg +0 -0
  85. data/lib/starter_web/assets/images/collections/books/romance/the_dressmaker.jpg +0 -0
  86. data/lib/starter_web/collections/_biography/a-life-in-questions.adoc +13 -8
  87. data/lib/starter_web/collections/_biography/becoming.adoc +18 -12
  88. data/lib/starter_web/collections/_biography/born-to-run.adoc +17 -13
  89. data/lib/starter_web/collections/_biography/forty-autumns.adoc +14 -9
  90. data/lib/starter_web/collections/_biography/not-dead-yet.adoc +12 -7
  91. data/lib/starter_web/collections/_biography/princess-diarist-the.adoc +13 -8
  92. data/lib/starter_web/collections/_biography/when-breath-becomes-air.adoc +14 -9
  93. data/lib/starter_web/collections/_fantasy/harry-potter-deathly-hallows.adoc +13 -7
  94. data/lib/starter_web/collections/_fantasy/harry-potter-philosophers-stone.adoc +12 -8
  95. data/lib/starter_web/collections/_fantasy/mistborn-trilogy.adoc +14 -10
  96. data/lib/starter_web/collections/_fantasy/ready-player-one.adoc +12 -11
  97. data/lib/starter_web/collections/_fantasy/sword-of-destiny.adoc +15 -7
  98. data/lib/starter_web/collections/_fantasy/terry-pratchet-diary.adoc +11 -6
  99. data/lib/starter_web/collections/_romance/breath-of-snow-and-ashes.adoc +15 -10
  100. data/lib/starter_web/collections/_romance/it-ends-with-us.adoc +11 -6
  101. data/lib/starter_web/collections/_romance/outlander-novel.adoc +11 -6
  102. data/lib/starter_web/collections/_romance/{virgins-outlander-short-story.adoc → outlander-virgins-short-story.adoc} +11 -6
  103. data/lib/starter_web/collections/_romance/{dressmaker-the.adoc → the-dressmaker.adoc} +11 -6
  104. data/lib/starter_web/collections/_romance/{fiery-cross-the.adoc → the-fiery-cross.adoc} +11 -6
  105. data/lib/starter_web/collections/posts/public/featured/_posts/0000-00-00-welcome-to-j1.adoc.erb +6 -6
  106. data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.adoc +12 -11
  107. data/lib/starter_web/collections/posts/public/featured/_posts/2021-02-01-static-site-generators.adoc +9 -7
  108. data/lib/starter_web/collections/posts/public/featured/_posts/2022-02-01-about-j1.adoc +8 -8
  109. data/lib/starter_web/dot.ruby-version +1 -1
  110. data/lib/starter_web/index.html +10 -8
  111. data/lib/starter_web/package.json +1 -1
  112. data/lib/starter_web/pages/public/about/features.adoc +7 -1
  113. data/lib/starter_web/pages/public/about/reporting_issues.adoc +2 -0
  114. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/000_intro.adoc +2 -0
  115. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/100_converter.adoc +2 -0
  116. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/200_themes.adoc +2 -0
  117. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/000_intro.asciidoc +1 -1
  118. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/112_getting_started.asciidoc +1 -0
  119. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/_includes/documents/100_converter/113_themes.asciidoc +1 -0
  120. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +2 -0
  121. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/_includes/documents/100_chapter.asciidoc +3 -1
  122. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/_includes/documents/200_chapter.asciidoc +1 -0
  123. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +2 -0
  124. data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +6 -0
  125. data/lib/starter_web/pages/public/blog/navigator/archive/allview.html +6 -13
  126. data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +17 -11
  127. data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +7 -8
  128. data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +5 -7
  129. data/lib/starter_web/pages/public/blog/navigator/index.html +15 -14
  130. data/lib/starter_web/pages/public/features/general.adoc +7 -1
  131. data/lib/starter_web/pages/public/features/template.adoc +87 -128
  132. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_all_books.adoc +10 -2
  133. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_biography.adoc +8 -3
  134. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_fantasy.adoc +11 -4
  135. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_romance.adoc +11 -5
  136. data/lib/starter_web/pages/public/learn/bookshelf/jekyll_collections.adoc +24 -14
  137. data/lib/starter_web/pages/public/learn/bs_sass_variables/bs_sass_variables.adoc +4 -0
  138. data/lib/starter_web/pages/public/learn/core_web_vitals/core_web_vitals.adoc +8 -4
  139. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/100_gistblock.asciidoc +2 -1
  140. data/lib/starter_web/pages/public/learn/roundtrip/_includes/documents/themes_bootstrap.asciidoc +27 -28
  141. data/lib/starter_web/pages/public/learn/roundtrip/asciidoc_extensions.adoc +169 -155
  142. data/lib/starter_web/pages/public/learn/roundtrip/bootstrap_themes.adoc +28 -19
  143. data/lib/starter_web/pages/public/learn/roundtrip/highlghter_rouge.adoc +9 -5
  144. data/lib/starter_web/pages/public/learn/roundtrip/icon_fonts.adoc +67 -77
  145. data/lib/starter_web/pages/public/learn/roundtrip/lunr_search.1.asciidoc +460 -0
  146. data/lib/starter_web/pages/public/learn/roundtrip/lunr_search.adoc +12 -7
  147. data/lib/starter_web/pages/public/learn/roundtrip/modal_extentions.adoc +26 -19
  148. data/lib/starter_web/pages/public/learn/roundtrip/present_images.adoc +470 -447
  149. data/lib/starter_web/pages/public/learn/roundtrip/present_videos.adoc +60 -59
  150. data/lib/starter_web/pages/public/learn/roundtrip/responsive_tables.adoc +51 -38
  151. data/lib/starter_web/pages/public/learn/roundtrip/typography.adoc +31 -25
  152. data/lib/starter_web/pages/public/learn/where_to_go.adoc +9 -4
  153. data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +4 -0
  154. data/lib/starter_web/pages/public/legal/en/200_impress.adoc +2 -0
  155. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +22 -3
  156. data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +5 -0
  157. data/lib/starter_web/pages/public/manuals/speak2me.adoc +412 -0
  158. data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +27 -19
  159. data/lib/starter_web/pages/public/plans/plans.adoc +3 -0
  160. data/lib/starter_web/pages/public/tools/cheatsheet/gem.adoc +2 -0
  161. data/lib/starter_web/pages/public/tools/cheatsheet/git.adoc +2 -0
  162. data/lib/starter_web/pages/public/tools/cheatsheet/j1.adoc +2 -0
  163. data/lib/starter_web/pages/public/tools/cheatsheet/yaml.adoc +6 -0
  164. data/lib/starter_web/pages/public/tools/previewer/preview_bootstrap_theme.adoc +17 -3
  165. data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
  166. data/lib/starter_web/utilsrv/package.json +1 -1
  167. metadata +38 -7
  168. data/lib/starter_web/_includes/google/static/google_ad_7284712660.html +0 -19
@@ -0,0 +1,26 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/themes/j1/modules/speak2me/js/speak2me.min.js
4
+ # speak2me v.1.0 implementation (based on Articulate.js) for J1 Theme
5
+ #
6
+ # Product/Info:
7
+ # https://jekyll.one
8
+ # https://github.com/acoti/articulate.js/tree/master
9
+ #
10
+ # Copyright (C) 2023 Juergen Adams
11
+ # Copyright (C) 2017 Adam Coti
12
+ #
13
+ # J1 Theme is licensed under the MIT License.
14
+ # See: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE.md
15
+ # Articulate is licensed under the MIT License.
16
+ # See: https://github.com/acoti/articulate.js/blob/master/LICENSE
17
+ # -----------------------------------------------------------------------------
18
+ */
19
+
20
+ /* Articulate.js (1.1.0). (C) 2017 Adam Coti.
21
+ MIT @license: en.wikipedia.org/wiki/MIT_License
22
+ See Github page at: https://github.com/acoti/articulate.js
23
+ See Web site at: http://articulate.purefreedom.com
24
+ */
25
+
26
+ !function(e){"use strict";var n,t,i,a,r,s,o=new Array,l=new Array,c=new Array,u=new Array,d=new Array,p=.9,h=1,f=.9,g=function(e){for(var n=e+"=",t=document.cookie.split(";"),i=0;i<t.length;i++){for(var a=t[i];" "===a.charAt(0);)a=a.substring(1,a.length);if(0===a.indexOf(n)){var r=a.substring(n.length,a.length);return r}}return}("googtrans"),m="Google UK English Female",v=/Edg/i.test(navigator.userAgent),y=/chrome/i.test(navigator.userAgent)&&!v,k=0,j=!1;function w(e,n){this.prepend=e,this.append=n}function b(e,n){this.name=e,this.language=n}function Q(){for(var e=speechSynthesis.getVoices(),n=0;n<e.length;n++)d.push(new b(e[n].name,e[n].lang))}if(Q(),"undefined"!=typeof speechSynthesis&&void 0!==speechSynthesis.onvoiceschanged&&(speechSynthesis.onvoiceschanged=Q),"speechSynthesis"in window){var S=new SpeechSynthesisUtterance;window.speechSynthesis.cancel()}if(void 0===g)a="en-US";else{var N=g.split("/");a="en"==N[2]?"en-GB":N[2].includes("ar")?"ar-EG":N[2].includes("cs")?"cs-CZ":N[2].includes("da")?"da-DK":N[2].includes("en")?"en-UK":N[2].includes("et")?"et-EE":N[2].includes("ka")?"ka-GE":N[2].includes("el")?"el-GR":N[2].includes("iw")?"he-IL":N[2].includes("hi")?"hi-IN":N[2].includes("ja")?"ja-JP":N[2].includes("zh")?"zh-CN":N[2]+"-"+N[2].toUpperCase()}if(y)var E={"de-DE":"Google Deutsch","en-US":"Google US English","en-GB":"Google UK English Female","es-ES":"Google español","fr-FR":"Google français","it-IT":"Google italiano","nl-NL":"Google Nederlands","pl-PL":"Google polski","pt-PT":"Google português do Brasil"}[a];if(v)E={"sq-AL":"Microsoft Anila Online (Natural) - Albanian (Albania)","ar-EG":"Microsoft Salma Online (Natural) - Arabic (Egypt)","bg-BG":"Microsoft Kalina Online (Natural) - Bulgarian (Bulgaria)","zh-CN":"Microsoft Xiaoxiao Online (Natural) - Chinese (Mainland)","hr-HR":"Microsoft Gabrijela Online (Natural) - Croatian (Croatia)","cs-CZ":"Microsoft Antonin Online (Natural) - Czech (Czech)","da-DK":"Microsoft Christel Online (Natural) - Danish (Denmark)","nl-NL":"Microsoft Colette Online (Natural) - Dutch (Netherlands)","en-GB":"Microsoft Libby Online (Natural) - English (United Kingdom)","en-US":"Microsoft Aria Online (Natural) - English (United States)","et-EE":"Microsoft Anu Online (Natural) - Estonian (Estonia)","fi-FI":"Microsoft Noora Online (Natural) - Finnish (Finland)","fr-FR":"Microsoft Denise Online (Natural) - French (France)","ka-GE":"Microsoft Giorgi Online (Natural) - Georgian (Georgia)","de-DE":"Microsoft Katja Online (Natural) - German (Germany)","el-GR":"Microsoft Athina Online (Natural) - Greek (Greece)","he-IL":"Microsoft Avri Online (Natural) - Hebrew (Israel)","hi-IN":"Microsoft Madhur Online (Natural) - Hindi (India)","hu-HU":"Microsoft Noemi Online (Natural) - Hungarian (Hungary)","it-IT":"Microsoft Elsa Online (Natural) - Italian (Italy)","ja-JP":"Microsoft Nanami Online (Natural) - Japanese (Japan)"}[a];var G={speak:function(a){e.extend({},e.fn.speak2me.defaults,a);var d,g,m,b,Q="",N=new Array;if(N.a=new w("clicking the link,",""),N.q=new w(",",""),N.ol=new w("Start of list.","End of list."),N.ul=new w("Start of list.","End of list."),N.dl=new w("Start of list.","End of list."),N.dt=new w("",", "),N.img=new w("There's an embedded image with the description,",""),N.table=new w("There's an embedded table with the caption,","Note, table contents are not spoken, "),N.figure=new w("There's an embedded figure with the caption,",""),N.blockquote=new w("Blockquote start.","Blockquote end."),b=["audio","button","canvas","code","del","dialog","embed","form","head","iframe","meter","nav","noscript","object","s","script","select","style","textarea","video"],"speechSynthesis"in window){if(!window.speechSynthesis.speaking)return this.each(function(){d=e(this).clone(),g=function(e){var n,t,i;if(l.length>0)for(var a in l){var r=b.indexOf(l[a]);r>-1&&b.splice(r,1)}for(var a in b)jQuery(e).find(b[a]).addBack(b[a]).not("[data-speak2me-recognize]").each(function(){jQuery(this).html("")});if(o.length>0)for(var a in o)jQuery(e).find(o[a]).addBack(o[a]).not("[data-speak2me-recognize]").each(function(){jQuery(this).html("")});jQuery(e).find("[data-speak2me-ignore]").addBack("[data-speak2me-ignore]").each(function(){jQuery(this).html("")}),jQuery(e).find(".speak2me-ignore").addBack("[data-speak2me-ignore]").each(function(){jQuery(this).html("")}),jQuery(e).find("[data-speak2me-prepend]").addBack("[data-speak2me-prepend]").each(function(){n=jQuery(this).data("speak2me-prepend"),jQuery(this).prepend(n+" ")}),jQuery(e).find("[data-speak2me-append]").addBack("[data-speak2me-append]").each(function(){n=jQuery(this).data("speak2me-append"),jQuery(this).append(" "+n)});for(var s in N)jQuery(e).find(s).each(function(){u[s]?(jQuery(this).prepend(u[s].prepend+" "),jQuery(this).append(" "+u[s].append)):(jQuery(this).prepend(N[s].prepend+" "),jQuery(this).append(" "+N[s].append))});return jQuery(e).find("h1,h2,h3,h4,h5,h6,li,p").addBack("h1,h2,h3,h4,h5,h6,li,p").each(function(){jQuery(this).append(". ")}),jQuery(e).find("br").each(function(){jQuery(this).after(", ")}),jQuery(e).find("figure").addBack("figure").each(function(){n=jQuery(this).find("figcaption").html(),i=u.figure?u.figure.prepend:N.figure.prepend,null!=n&&""!==n&&jQuery("<div>"+i+" "+n+".</div>").insertBefore(this),jQuery(this).remove()}),jQuery(e).find("img").addBack("img").each(function(){n=jQuery(this).attr("alt");var e=jQuery(this).parent(),t=e.get(0).tagName;i=u.img?u.img.prepend:N.img.prepend,void 0!==n&&""!=n&&("PICTURE"==t?jQuery("<div>"+i+" "+n+".</div>").insertBefore(e):jQuery("<div>"+i+" "+n+".</div>").insertBefore(this)),jQuery(this).remove()}),jQuery(e).find("table").addBack("table").each(function(){n=jQuery(this).find("caption").text(),u.table?(i=u.table.prepend,t=u.table.append):(i=N.table.prepend,t=N.table.append),void 0!==n&&""!=n&&(jQuery("<div>"+i+" "+n+".</div>").insertBefore(this),jQuery("<div>"+t+" .</div>").insertBefore(this)),jQuery(this).remove()}),jQuery(e).find("[data-speak2me-swap]").addBack("[data-speak2me-swap]").each(function(){n=jQuery(this).data("speak2me-swap"),jQuery(this).text(n)}),jQuery(e).find("[data-speak2me-spell]").addBack("[data-speak2me-spell]").each(function(){n=(n=jQuery(this).text()).split("").join(" "),jQuery(this).text(n)}),e}(d),g=jQuery(g).html(),m=function(e){var n,t,i,a,s;for(;-1!=e.indexOf("\x3c!-- <speak2me>")&&(n=e.indexOf("\x3c!-- <speak2me>"),-1!=(t=e.indexOf("</speak2me> --\x3e",n)));)i=e.substring(n+17,t),a=e.substring(0,n),s=e.substring(t+17),e=a+" "+i+" "+s;e=(e=e.replace(/<!--[\s\S]*?-->/g,"")).replace(/(<([^>]+)>)/gi,"");var o,l,d=c.length,p=0;for(;p<d;){o=(o=c[p]).replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),l=c[p+1]+" ";var h=new RegExp(o,"gi"),e=e.replace(h,l);p+=2}e=u.q?(e=e.replace(/“/g,u.q.prepend+" ")).replace(/”/g," "+u.q.append):(e=e.replace(/“/g,N.q.prepend+" ")).replace(/”/g," "+N.q.append);e=(e=(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(/:/g,", ")).replace(/^$/g,"\n")).replace(/^\s+$/g,"\n")).replace(/\s+\.\s+/g,"\n")).replace(/\s+\.\s+$/g,"\n")).replace(/\.\./g,".")).replace(/\se\.g\.\s/g," for example, ")).replace(/\,\s+\.g\.\s+\,/g," for example, ")).replace(/[\!\?]/g,", ")).replace(/—/g,", ")).replace(/--/g,", ");var f=document.createElement("textarea");f.innerHTML=e;const g=function(e,n){const t=e.split(/[.!?]/);return t.forEach((e,n)=>{t[n]=e.replace(/^\s+|\s+$/g,""),t[n]=t[n]+". "}),t}(e=(e=(e=(e=(e=(e=(e=f.value).replace(/(\r\n|\n|\r)/gm,"")).replace(/ +/g," ")).replace(/\.\./g,".")).replace(/,,/g,",")).replace(/ ,/g,",")).replace(/^\s+|\s+$/g,""));return r=g.length,g}(g),Q=m}),p=void 0!==n?n:.9,h=void 0!==t?t:1,f=void 0!==i?i:.9,(S=new SpeechSynthesisUtterance).rate=p,S.pitch=h,S.volume=f,S.voice=void 0,y&&(S.voice=speechSynthesis.getVoices().filter(function(e){return e.name==E})[0]),v&&(S.voice=speechSynthesis.getVoices().filter(function(e){return e.name==E})[0]),function(n,t){const i=window.speechSynthesis;n.text=t[k],i.speak(n),n.addEventListener("start",n=>{e(".mdib-speaker").addClass("mdib-spin")}),n.addEventListener("end",function(n){k++,e(s).removeClass("speak-highlighted")});var a=setInterval(function(){if(!i.speaking)if(k==r||j)k=0,j=!1,i.cancel(),e(".mdib-speaker").removeClass("mdib-spin"),clearInterval(a);else{n.text=t[k];var o=n.text.substr(0,20);s=e("#content").find("p:contains('"+o+"')")[0],e(s).addClass("speak-highlighted"),i.speak(n)}},500)}(S,Q),S}else alert("Sorry, this browser does not support the Web Speech API.")},pause:function(){return window.speechSynthesis.pause(),this},resume:function(){return window.speechSynthesis.resume(),this},stop:function(){return window.speechSynthesis.cancel(),j=!0,this},enabled:function(){return"speechSynthesis"in window},isSpeaking:function(){return window.speechSynthesis.speaking},isPaused:function(){return window.speechSynthesis.paused},rate:function(){var e=arguments[0];return e>=.1&&e<=10?n=e:void 0===e&&(n=void 0,p=.9),this},pitch:function(){var e=arguments[0];return e>=.1&&e<=2?t=e:void 0===e&&(t=void 0,h=1),this},volume:function(){var e=arguments[0];return e>=0&&e<=1?i=e:void 0===e&&(i=void 0,f=.9),this},ignore:function(){var e=arguments.length;for(o.length=0;e>0;)e--,o.push(arguments[e]);return this},recognize:function(){var e=arguments.length;for(l.length=0;e>0;)e--,l.push(arguments[e]);return this},replace:function(){var e=arguments.length;c.length=0;for(var n=0;n<e&&(c.push(arguments[n],arguments[n+1]),e-(n+=2)!=1););return this},customize:function(){var e=arguments.length;if(0==e&&(u=[]),2==e){if(-1==["img","table","figure"].indexOf(arguments[0]))return void console.log("Error: When customizing, tag indicated must be either 'img', 'table', or 'figure'.");u[arguments[0].toString()]=new w(arguments[1].toString())}if(3==e){if(-1==["q","ol","ul","blockquote"].indexOf(arguments[0]))return void console.log("Error: When customizing, tag indicated must be either 'q', 'ol', 'ul' or 'blockquote'.");u[arguments[0].toString()]=new w(arguments[1].toString(),arguments[2].toString())}return this},getVoices:function(){if(0==arguments.length)return d;var e=jQuery(arguments[0]),n="Choose a voice";void 0!==arguments[1]&&(n=arguments[1]),e.append(jQuery("<select id='voiceSelect' name='voiceSelect'><option value='none'>"+n+"</option></select>"));for(var t=0,i=0;i<d.length;i++)if(y&&d[i].name.includes("Microsoft"))t++;else if(!v||d[i].name.includes("Natural")){var a=document.createElement("option");a.textContent=d[i].name+" ("+d[i].language+")",a.setAttribute("value",d[i].name),void 0!==E?d[i].name===E&&a.setAttribute("selected","selected"):d[i].name.includes(m),a.setAttribute("data-speak2me-language",d[i].language),e.find("select").append(a)}else t++;return i-t},setVoice:function(){if(arguments.length<2)return this;var e,n;if("name"==arguments[0]){e=arguments[1];for(var t=0;t<d.length;t++)d[t].name==e&&(m=e)}if("language"==arguments[0])if(2==(n=arguments[1].toUpperCase()).length){for(t=0;t<d.length;t++)if(d[t].language.substring(0,2).toUpperCase()==n){m=d[t].name;break}}else for(t=0;t<d.length;t++)if(d[t].language==n){m=d[t].name;break}return this}};e.fn.speak2me=function(e){return G[e]?G[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?void jQuery.error("Method "+e+" does not exist on jQuery.speak2me"):G.speak.apply(this,arguments)}}(jQuery);
@@ -276,18 +276,21 @@ function Translator(props) {
276
276
  settings.visibleRows = dropdownLanguages.length;
277
277
  }
278
278
 
279
- // create the dropdown
280
- MsDropdown.make(selectorID, {
281
- byJson: {
282
- data: dropdownLanguages,
283
- name: settings.name,
284
- size: settings.size,
285
- width: settings.width,
286
- multiple: settings.multiple,
287
- },
288
- enableAutoFilter: settings.enableAutoFilter,
289
- visibleRows: settings.visibleRows,
290
- });
279
+ // prevent multiple dropdowns created
280
+ if ($('#dropdownJSON')[0].msDropdown === undefined) {
281
+ // create the dropdown
282
+ MsDropdown.make(selectorID, {
283
+ byJson: {
284
+ data: dropdownLanguages,
285
+ name: settings.name,
286
+ size: settings.size,
287
+ width: settings.width,
288
+ multiple: settings.multiple,
289
+ },
290
+ enableAutoFilter: settings.enableAutoFilter,
291
+ visibleRows: settings.visibleRows,
292
+ });
293
+ }
291
294
  },
292
295
  error: function (jqXHR, textStatus, errorThrown) {
293
296
  logger.error('\n' + 'failed to retrieve JSON data from: ' + settings.url);
@@ -300,6 +303,7 @@ function Translator(props) {
300
303
  // Show|Create the translation dialog (modal)
301
304
  // ---------------------------------------------------------------------------
302
305
  function showDialog() {
306
+ var cbAction = 'none'
303
307
  Events.documentReady(function () {
304
308
 
305
309
  self.modal = document.getElementById(self.props.dialogContainerID);
@@ -402,7 +406,7 @@ function Translator(props) {
402
406
  // if the modal is closed, show the menubar
403
407
  // $('#navigator_nav_navbar').show();
404
408
  // run the postSelectionCallback for (final) translation
405
- executeFunctionByName (self.props.postSelectionCallback, window);
409
+ executeFunctionByName (self.props.postSelectionCallback, window, cbAction);
406
410
  }); // END modal on 'hidden'
407
411
 
408
412
  // ---------------------------------------------------------------------
@@ -423,6 +427,7 @@ function Translator(props) {
423
427
 
424
428
  self.$buttonDoNotAgree = $('#translator-buttonDoNotAgree');
425
429
  self.$buttonAgree = $('#translator-buttonAgree');
430
+ self.$buttonExit = $('#translator-buttonExit');
426
431
  self.$buttonSave = $('#translator-buttonSave');
427
432
  self.$buttonAgreeAll = $('#translator-buttonAgreeAll');
428
433
 
@@ -445,18 +450,26 @@ function Translator(props) {
445
450
 
446
451
  self.$buttonDoNotAgree.click(function () {
447
452
  doNotAgree();
453
+ cbAction = 'process';
448
454
  });
449
455
  self.$buttonAgree.click(function () {
450
456
  agreeAll();
457
+ cbAction = 'process';
458
+ });
459
+ self.$buttonExit.click(function () {
460
+ cbAction = 'exitOnly';
461
+ exitAll();
451
462
  });
452
463
  self.$buttonSave.click(function () {
453
464
  $('#google-options').collapse('hide');
454
465
  saveSettings();
455
466
  updateOptionsFromCookie();
467
+ cbAction = 'process';
456
468
  });
457
469
  self.$buttonAgreeAll.click(function () {
458
470
  $('#google-options').collapse('hide');
459
471
  agreeAll();
472
+ cbAction = 'process';
460
473
  });
461
474
  self.$modal.modal('show');
462
475
  })
@@ -564,6 +577,10 @@ function Translator(props) {
564
577
  self.$modal.modal('hide');
565
578
  }
566
579
 
580
+ function exitAll() {
581
+ self.$modal.modal('hide');
582
+ }
583
+
567
584
  // ---------------------------------------------------------------------------
568
585
  // doNotAgree()
569
586
  // process current settings from checkboxes for button `doNotAgree`
@@ -12,4 +12,4 @@
12
12
  # See: https://github.com/jekyll-one/J1 Theme/blob/master/LICENSE
13
13
  # -----------------------------------------------------------------------------
14
14
  */
15
- "use strict";function Translator(o){var e,a,t=this,n=log4javascript.getLogger("j1.core.translator"),i=!!new liteURL(window.location.href).protocol.includes("https"),s=!1,r={set:function(o,e,a,t,n,i){var s=window.btoa(e),r="; expires=Thu, 01 Jan 1970 00:00:00 UTC";if(a>0){var l=new Date;l.setTime(l.getTime()+864e5*a),r="; expires="+l.toUTCString()}i?n?document.cookie=o+"="+(s||"")+r+"; Path=/; SameSite="+t+"; Domain="+n+"; Secure="+i+";":document.cookie=o+"="+(s||"")+r+"; Path=/; SameSite="+t+"; Secure="+i+";":n?document.cookie=o+"="+(s||"")+r+"; Path=/; SameSite="+t+";Domain="+n+"; ":document.cookie=o+"="+(s||"")+r+"; Path=/; SameSite="+t+";"},get:function(o){for(var e=o+"=",a=document.cookie.split(";"),t=0;t<a.length;t++){for(var n=a[t];" "===n.charAt(0);)n=n.substring(1,n.length);if(0===n.indexOf(e)){var i=n.substring(e.length,n.length);return window.atob(i)}}}};for(var l in this.props={contentURL:"/assets/data/translator",cookieName:"j1.user.state",cookieConsentName:"j1.user.consent",cookieStorageDays:365,cookieSameSite:"Lax",cookieSecure:i,translationEnabled:!1,disableLanguageSelector:!1,translatorName:"google",translationLanguages:"all",translationLanguage:"auto",translateAllPages:!0,hideSuggestionBox:!0,hidePoweredBy:!0,hideTopFrame:!0,dialogLanguage:"content",dialogLanguages:["en","de"],dialogContainerID:"translator-modal",xhrDataElement:"",postSelectionCallback:""},o)this.props[l]=o[l];-1!==this.props.dialogLanguage.indexOf("-")&&(this.props.dialogLanguage=this.props.dialogLanguage.split("-")[0]),this.props.dialogLanguages.includes(this.props.dialogLanguage)||(this.props.dialogLanguage=this.props.dialogLanguages[0]),this.props.xhrDataElement=this.props.xhrDataElement+"-"+this.props.dialogLanguage,n.info("\ninitializing core module: started"),n.debug("\nstate: started"),r.get(t.props.cookieName)||(n.info("\ninitializing translator cookie: "+t.props.cookieName),r.set(t.props.cookieName,JSON.stringify({translatorName:"google",translationEnabled:!1,translateAllPages:!0,useLanguageFromBrowser:!0,translationLanguage:"de",analysis:!0,personalization:!0}),t.props.cookieStorageDays,t.props.cookieSameSite,t.props.cookieDomain,t.props.cookieSecure));var p={documentReady:function(o){"loading"!==document.readyState?o():document.addEventListener("DOMContentLoaded",o)}};function d(){var o=t.getSettings();if(o)for(var e in o)t.$modal.find("#google-options .translator-option[data-name="+e+'] input[type="checkbox"]').prop("checked",o[e])}function g(){s?(t.$buttonDoNotAgree.hide(),t.$buttonAgree.hide(),t.$buttonSave.show(),t.$buttonAgreeAll.show()):(t.$buttonDoNotAgree.show(),t.$buttonAgree.show(),t.$buttonSave.hide(),t.$buttonAgreeAll.hide())}function c(o){for(var e=t.$modal.find("#google-options .translator-option"),a={},n=0;n<e.length;n++){var i=e[n],s=i.getAttribute("data-name");if("necessary"===s)a[s]=!0;else if(void 0===o){var r=$(i).find('input[type="checkbox"]');a[s]=r.prop("checked")}else a[s]=!!o}return a}function u(){var o=JSON.parse(r.get(t.props.cookieConsentName)),e=JSON.parse(r.get(t.props.cookieName));e.analysis=!0,e.personalization=!0,e.translationEnabled=!0,o.analysis=e.analysis,o.personalization=e.personalization,r.set(t.props.cookieConsentName,JSON.stringify(o),t.props.cookieStorageDays,t.props.cookieSameSite,t.props.cookieDomain,t.props.cookieSecure),r.set(t.props.cookieName,JSON.stringify(e),t.props.cookieStorageDays,t.props.cookieSameSite,t.props.cookieDomain,t.props.cookieSecure),t.$modal.modal("hide")}this.showDialog=function(){!function o(){p.documentReady((function(){if(t.modal=document.getElementById(t.props.dialogContainerID),t.modal)t.$modal.modal("show");else{n.info("\nload consent modal"),t.modal=document.createElement("div"),t.modal.id=t.props.dialogContainerID,t.modal.style.display="none",t.modal.setAttribute("class","modal fade"),t.modal.setAttribute("tabindex","-1"),t.modal.setAttribute("role","dialog"),t.modal.setAttribute("aria-labelledby",t.props.dialogContainerID),document.body.append(t.modal),t.$modal=$(t.modal),t.$modal.on("show.bs.modal",function(){var o,e,a;n.debug("\nshow.bs.modal: entered"),$.when(void(e="#"+(a=function o(){var e={},a=!1,t=0,n=arguments.length;for("[object Boolean]"===Object.prototype.toString.call(arguments[0])&&(a=arguments[0],t++);t<n;t++){var i=arguments[t];!function(t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(a&&"[object Object]"===Object.prototype.toString.call(t[n])?e[n]=o(!0,e[n],t[n]):e[n]=t[n])}(i)}return e}({size:0,width:250,multiple:!1,selectedIndex:1,enableAutoFilter:!1,visibleRows:null},o={url:"/assets/data/iso-639-language-codes-flags.json",elm:"iso-639-languages",selector:"dropdownJSON",width:400,visibleRows:8})).selector,$.ajax({url:a.url,dataType:"json",success:function(o){var n=[];if(t.props.translationLanguages.includes("all"))n=o[a.elm];else for(var i=0;i<o[a.elm].length;i++)t.props.translationLanguages.includes(o[a.elm][i].value)&&n.push(o[a.elm][i]);a.visibleRows>n.length&&(a.visibleRows=n.length),MsDropdown.make(e,{byJson:{data:n,name:a.name,size:a.size,width:a.width,multiple:a.multiple},enableAutoFilter:a.enableAutoFilter,visibleRows:a.visibleRows})},error:function(o,e,t){n.error("\nfailed to retrieve JSON data from: "+a.url)}}))).then(function(o){n.info("\ncreating msDropdown from JSON data: finished")})}),t.$modal.on("shown.bs.modal",function(){var o,i;i=setInterval(function(){void 0!==document.getElementById("dropdownJSON").msDropdown&&((o=document.getElementById("dropdownJSON").msDropdown).length?(a="auto"===t.props.translationLanguage?(e=navigator.language||navigator.userLanguage).split("-")[0]:t.props.translationLanguage,o.selectedIndex=$("#dropdownJSON option[value="+a+"]").index(),t.props.disableLanguageSelector&&(o.disabled=!0),$("#dropdownJSON").show(),$("body").addClass("stop-scrolling"),n.info("\nmsDropdown successfully loaded in translation dialog"),clearInterval(i)):(n.error("\nno msDropdown found in translation dialog"),t.$modal.hide()))},10)}),t.$modal.on("hidden.bs.modal",function(){$("body").removeClass("stop-scrolling"),function o(e,a){for(var t=Array.prototype.slice.call(arguments,2),n=e.split("."),i=n.pop(),s=0;s<n.length;s++)a=a[n[s]];return a[i].apply(a,t)}(t.props.postSelectionCallback,window)});var o=t.props.contentURL+"/index.html";$.get(o).done(function(o){n.info("\nloading consent modal: successfully"),t.modal.innerHTML=o,t.modal.innerHTML=$("#"+t.props.xhrDataElement).eq(0).html(),t.modal.style.display="block",$(t.modal).modal({backdrop:"static",keyboard:!1}),t.$buttonDoNotAgree=$("#translator-buttonDoNotAgree"),t.$buttonAgree=$("#translator-buttonAgree"),t.$buttonSave=$("#translator-buttonSave"),t.$buttonAgreeAll=$("#translator-buttonAgreeAll"),n.info("\nload/initialze options from cookie"),g(),d(),$("#google-options").on("hide.bs.collapse",function(){s=!1,g()}).on("show.bs.collapse",function(){s=!0,g()}),n.info("\ninitialze button event handler"),t.$buttonDoNotAgree.click(function(){var o;o=c(),o.translationEnabled=!1,r.set(t.props.cookieName,JSON.stringify(o),t.props.cookieStorageDays,t.props.cookieSameSite,t.props.cookieDomain,t.props.cookieSecure),t.$modal.modal("hide")}),t.$buttonAgree.click(function(){u()}),t.$buttonSave.click(function(){var o,e;$("#google-options").collapse("hide"),o=c(),(e=JSON.parse(r.get(t.props.cookieConsentName))).analysis=o.analysis,e.personalization=o.personalization,r.set(t.props.cookieConsentName,JSON.stringify(e),t.props.cookieStorageDays,t.props.cookieSameSite,t.props.cookieDomain,t.props.cookieSecure),r.set(t.props.cookieName,JSON.stringify(o),t.props.cookieStorageDays,t.props.cookieSameSite,t.props.cookieDomain,t.props.cookieSecure),t.$modal.modal("hide"),d()}),t.$buttonAgreeAll.click(function(){$("#google-options").collapse("hide"),u()}),t.$modal.modal("show")}).fail(function(){n.error("\nloading translator dialog (modal): failed"),n.warn("\nprobably no|wrong `contentURL` set")})}}).bind(this))}()},this.getSettings=function(o){if(r.get(t.props.cookieName)){var e=JSON.parse(r.get(t.props.cookieName));return void 0===o?e:!!e&&e[o]}},n.info("\ninitializing core module finished"),n.debug("\nstate: finished")}
15
+ "use strict";function Translator(o){var e,t,a=this,n=log4javascript.getLogger("j1.core.translator"),i=!!new liteURL(window.location.href).protocol.includes("https"),s=!1,r={set:function(o,e,t,a,n,i){var s=window.btoa(e),r="; expires=Thu, 01 Jan 1970 00:00:00 UTC";if(t>0){var l=new Date;l.setTime(l.getTime()+24*t*60*60*1e3),r="; expires="+l.toUTCString()}document.cookie=i?n?o+"="+(s||"")+r+"; Path=/; SameSite="+a+"; Domain="+n+"; Secure="+i+";":o+"="+(s||"")+r+"; Path=/; SameSite="+a+"; Secure="+i+";":n?o+"="+(s||"")+r+"; Path=/; SameSite="+a+";Domain="+n+"; ":o+"="+(s||"")+r+"; Path=/; SameSite="+a+";"},get:function(o){for(var e=o+"=",t=document.cookie.split(";"),a=0;a<t.length;a++){for(var n=t[a];" "===n.charAt(0);)n=n.substring(1,n.length);if(0===n.indexOf(e)){var i=n.substring(e.length,n.length);return window.atob(i)}}}};for(var l in this.props={contentURL:"/assets/data/translator",cookieName:"j1.user.state",cookieConsentName:"j1.user.consent",cookieStorageDays:365,cookieSameSite:"Lax",cookieSecure:i,translationEnabled:!1,disableLanguageSelector:!1,translatorName:"google",translationLanguages:"all",translationLanguage:"auto",translateAllPages:!0,hideSuggestionBox:!0,hidePoweredBy:!0,hideTopFrame:!0,dialogLanguage:"content",dialogLanguages:["en","de"],dialogContainerID:"translator-modal",xhrDataElement:"",postSelectionCallback:""},o)this.props[l]=o[l];-1!==this.props.dialogLanguage.indexOf("-")&&(this.props.dialogLanguage=this.props.dialogLanguage.split("-")[0]),this.props.dialogLanguages.includes(this.props.dialogLanguage)||(this.props.dialogLanguage=this.props.dialogLanguages[0]),this.props.xhrDataElement=this.props.xhrDataElement+"-"+this.props.dialogLanguage,n.info("\ninitializing core module: started"),n.debug("\nstate: started");r.get(a.props.cookieName)||(n.info("\ninitializing translator cookie: "+a.props.cookieName),r.set(a.props.cookieName,JSON.stringify({translatorName:"google",translationEnabled:!1,translateAllPages:!0,useLanguageFromBrowser:!0,translationLanguage:"de",analysis:!0,personalization:!0}),a.props.cookieStorageDays,a.props.cookieSameSite,a.props.cookieDomain,a.props.cookieSecure));var d={documentReady:function(o){"loading"!==document.readyState?o():document.addEventListener("DOMContentLoaded",o)}};function p(o){var e,t=function o(){var e={},t=!1,a=0,n=arguments.length;"[object Boolean]"===Object.prototype.toString.call(arguments[0])&&(t=arguments[0],a++);for(var i=function(a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(t&&"[object Object]"===Object.prototype.toString.call(a[n])?e[n]=o(!0,e[n],a[n]):e[n]=a[n])};a<n;a++)i(arguments[a]);return e}({size:0,width:250,multiple:!1,selectedIndex:1,enableAutoFilter:!1,visibleRows:null},o);e="#"+t.selector,$.ajax({url:t.url,dataType:"json",success:function(o){var n=[];if(a.props.translationLanguages.includes("all"))n=o[t.elm];else for(var i=0;i<o[t.elm].length;i++)a.props.translationLanguages.includes(o[t.elm][i].value)&&n.push(o[t.elm][i]);t.visibleRows>n.length&&(t.visibleRows=n.length),void 0===$("#dropdownJSON")[0].msDropdown&&MsDropdown.make(e,{byJson:{data:n,name:t.name,size:t.size,width:t.width,multiple:t.multiple},enableAutoFilter:t.enableAutoFilter,visibleRows:t.visibleRows})},error:function(o,e,a){n.error("\nfailed to retrieve JSON data from: "+t.url)}})}function c(){var o="none";d.documentReady(function(){if(a.modal=document.getElementById(a.props.dialogContainerID),a.modal)a.$modal.modal("show");else{n.info("\nload consent modal"),a.modal=document.createElement("div"),a.modal.id=a.props.dialogContainerID,a.modal.style.display="none",a.modal.setAttribute("class","modal fade"),a.modal.setAttribute("tabindex","-1"),a.modal.setAttribute("role","dialog"),a.modal.setAttribute("aria-labelledby",a.props.dialogContainerID),document.body.append(a.modal),a.$modal=$(a.modal),a.$modal.on("show.bs.modal",function(){n.debug("\nshow.bs.modal: entered"),$.when(p({url:"/assets/data/iso-639-language-codes-flags.json",elm:"iso-639-languages",selector:"dropdownJSON",width:400,visibleRows:8})).then(function(o){n.info("\ncreating msDropdown from JSON data: finished")})}),a.$modal.on("shown.bs.modal",function(){var o,i;i=setInterval(function(){void 0!==document.getElementById("dropdownJSON").msDropdown&&((o=document.getElementById("dropdownJSON").msDropdown).length?("auto"===a.props.translationLanguage?(e=navigator.language||navigator.userLanguage,t=e.split("-")[0]):t=a.props.translationLanguage,o.selectedIndex=$("#dropdownJSON option[value="+t+"]").index(),a.props.disableLanguageSelector&&(o.disabled=!0),$("#dropdownJSON").show(),$("body").addClass("stop-scrolling"),n.info("\nmsDropdown successfully loaded in translation dialog"),clearInterval(i)):(n.error("\nno msDropdown found in translation dialog"),a.$modal.hide()))},10)}),a.$modal.on("hidden.bs.modal",function(){$("body").removeClass("stop-scrolling"),function(o,e){for(var t=Array.prototype.slice.call(arguments,2),a=o.split("."),n=a.pop(),i=0;i<a.length;i++)e=e[a[i]];e[n].apply(e,t)}(a.props.postSelectionCallback,window,o)});var i=a.props.contentURL+"/index.html";$.get(i).done(function(e){n.info("\nloading consent modal: successfully"),a.modal.innerHTML=e,a.modal.innerHTML=$("#"+a.props.xhrDataElement).eq(0).html(),a.modal.style.display="block",$(a.modal).modal({backdrop:"static",keyboard:!1}),a.$buttonDoNotAgree=$("#translator-buttonDoNotAgree"),a.$buttonAgree=$("#translator-buttonAgree"),a.$buttonExit=$("#translator-buttonExit"),a.$buttonSave=$("#translator-buttonSave"),a.$buttonAgreeAll=$("#translator-buttonAgreeAll"),n.info("\nload/initialze options from cookie"),u(),g(),$("#google-options").on("hide.bs.collapse",function(){s=!1,u()}).on("show.bs.collapse",function(){s=!0,u()}),n.info("\ninitialze button event handler"),a.$buttonDoNotAgree.click(function(){var e;(e=m()).translationEnabled=!1,r.set(a.props.cookieName,JSON.stringify(e),a.props.cookieStorageDays,a.props.cookieSameSite,a.props.cookieDomain,a.props.cookieSecure),a.$modal.modal("hide"),o="process"}),a.$buttonAgree.click(function(){h(),o="process"}),a.$buttonExit.click(function(){o="exitOnly",a.$modal.modal("hide")}),a.$buttonSave.click(function(){var e,t;$("#google-options").collapse("hide"),e=m(),(t=JSON.parse(r.get(a.props.cookieConsentName))).analysis=e.analysis,t.personalization=e.personalization,r.set(a.props.cookieConsentName,JSON.stringify(t),a.props.cookieStorageDays,a.props.cookieSameSite,a.props.cookieDomain,a.props.cookieSecure),r.set(a.props.cookieName,JSON.stringify(e),a.props.cookieStorageDays,a.props.cookieSameSite,a.props.cookieDomain,a.props.cookieSecure),a.$modal.modal("hide"),g(),o="process"}),a.$buttonAgreeAll.click(function(){$("#google-options").collapse("hide"),h(),o="process"}),a.$modal.modal("show")}).fail(function(){n.error("\nloading translator dialog (modal): failed"),n.warn("\nprobably no|wrong `contentURL` set")})}}.bind(this))}function g(){var o=a.getSettings();if(o)for(var e in o){a.$modal.find("#google-options .translator-option[data-name="+e+'] input[type="checkbox"]').prop("checked",o[e])}}function u(){s?(a.$buttonDoNotAgree.hide(),a.$buttonAgree.hide(),a.$buttonSave.show(),a.$buttonAgreeAll.show()):(a.$buttonDoNotAgree.show(),a.$buttonAgree.show(),a.$buttonSave.hide(),a.$buttonAgreeAll.hide())}function m(o){for(var e=a.$modal.find("#google-options .translator-option"),t={},n=0;n<e.length;n++){var i=e[n],s=i.getAttribute("data-name");if("necessary"===s)t[s]=!0;else if(void 0===o){var r=$(i).find('input[type="checkbox"]');t[s]=r.prop("checked")}else t[s]=!!o}return t}function h(){var o=JSON.parse(r.get(a.props.cookieConsentName)),e=JSON.parse(r.get(a.props.cookieName));e.analysis=!0,e.personalization=!0,e.translationEnabled=!0,o.analysis=e.analysis,o.personalization=e.personalization,r.set(a.props.cookieConsentName,JSON.stringify(o),a.props.cookieStorageDays,a.props.cookieSameSite,a.props.cookieDomain,a.props.cookieSecure),r.set(a.props.cookieName,JSON.stringify(e),a.props.cookieStorageDays,a.props.cookieSameSite,a.props.cookieDomain,a.props.cookieSecure),a.$modal.modal("hide")}this.showDialog=function(){c()},this.getSettings=function(o){if(r.get(a.props.cookieName)){var e=JSON.parse(r.get(a.props.cookieName));return void 0===o?e:!!e&&e[o]}},n.info("\ninitializing core module finished"),n.debug("\nstate: finished")}
data/lib/j1/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module J1
2
- VERSION = '2023.5.2'
2
+ VERSION = '2023.7.0'
3
3
  end
@@ -63,9 +63,9 @@ gem 'jekyll', '~> 4.0'
63
63
  # ------------------------------------------------------------------------------
64
64
  # Install Webrick GEM (internally used Web Server) if Ruby V3 is used
65
65
  #
66
- install_if -> { RUBY_VERSION =~ /3/ } do
67
- gem 'webrick', '~> 1.7'
68
- end
66
+ #install_if -> { RUBY_VERSION =~ /3/ } do
67
+ # gem 'webrick', '~> 1.8.1'
68
+ #end
69
69
 
70
70
  # ------------------------------------------------------------------------------
71
71
  # PRODUCTION: Gem needed for the Jekyll and J1 prod environment
@@ -75,11 +75,11 @@ end
75
75
  # Specify the THEME GEM used for the project
76
76
 
77
77
  # Loaded from RubyGems
78
- gem 'j1-template', '~> 2023.5.2'
78
+ gem 'j1-template', '~> 2023.7.0'
79
79
 
80
80
  # Loaded from gem.fury.io
81
81
  #source 'https://gem.fury.io/jekyll-one-org/' do
82
- # gem 'j1-template', '~> 2023.5.2'
82
+ # gem 'j1-template', '~> 2023.6.0'
83
83
  #end
84
84
 
85
85
  # ------------------------------------------------------------------------------
@@ -379,7 +379,7 @@ This command creates a **initial** project in folder **my-starter**.
379
379
  2023-02-28 18:12:12 - GENERATE: Resolving dependencies...
380
380
  2023-02-28 18:12:12 - GENERATE: Using bundler 2.3.7
381
381
  ...
382
- 2023-02-28 18:12:12 - GENERATE: Using j1-template 2023.5.2
382
+ 2023-02-28 18:12:12 - GENERATE: Using j1-template 2023.7.0
383
383
  2023-02-28 18:12:12 - GENERATE: Bundle complete! 31 Gemfile dependencies, 78 gems now installed.
384
384
  2023-02-28 18:12:12 - GENERATE: Bundled gems are installed into `../../.gem`
385
385
  2023-02-28 18:12:12 - GENERATE: C:/Users/xxx/.gem/ruby/3.1.0;C:/DevTools/Ruby31-x64/lib/ruby/gems/3.1.0;
@@ -415,7 +415,7 @@ commands are available as well.
415
415
  2023-02-28 18:17:48 - SETUP: Initialize the project ...
416
416
  2023-02-28 18:17:48 - SETUP: Be patient, this will take a while ...
417
417
  2023-02-28 18:17:49 - SETUP:
418
- 2023-02-28 18:17:49 - SETUP: > j1@2023.5.2 setup C:\Users\xxx\j1-projects\my-starter
418
+ 2023-02-28 18:17:49 - SETUP: > j1@2023.7.0 setup C:\Users\xxx\j1-projects\my-starter
419
419
  2023-02-28 18:17:49 - SETUP: > npm --silent run setup-start && npm --silent run setup-base && run-s -s setup:*
420
420
  2023-02-28 18:17:49 - SETUP:
421
421
  2023-02-28 18:17:50 - SETUP: Setup project for first use ..
@@ -460,7 +460,7 @@ browser. Let's start the journey ...
460
460
  Check setup state of the J1 project ...
461
461
  2023-02-28 18:26:18 - SITE: Starting up your site ...
462
462
  2023-02-28 18:26:18 - SITE:
463
- 2023-02-28 18:26:18 - SITE: > j1@2023.5.2 j1-site C:\Users\jadams\j1-projects\my-starter
463
+ 2023-02-28 18:26:18 - SITE: > j1@2023.7.0 j1-site C:\Users\jadams\j1-projects\my-starter
464
464
  2023-02-28 18:26:18 - SITE: > run-p -s j1-site:*
465
465
  2023-02-28 18:26:18 - SITE:
466
466
  2023-02-28 18:26:20 - SITE: Startup UTILSRV ..
@@ -499,7 +499,7 @@ Check setup state of the J1 project ...
499
499
  REBUILD: Rebuild the projects website ...
500
500
  REBUILD: Be patient, this will take a while ...
501
501
  2023-02-28 18:45:09 - REBUILD:
502
- 2023-02-28 18:45:09 - REBUILD: > j1@2023.5.2 rebuild C:\Users\xxx\j1-projects\my-starter
502
+ 2023-02-28 18:45:09 - REBUILD: > j1@2023.7.0 rebuild C:\Users\xxx\j1-projects\my-starter
503
503
  2023-02-28 18:45:09 - REBUILD: > run-s -s rebuild:* && run-s -s post-rebuild:*
504
504
  2023-02-28 18:45:09 - REBUILD:
505
505
  2023-02-28 18:45:10 - REBUILD: Rebuild site incremental ..
@@ -547,7 +547,7 @@ using Lerna for all packages:
547
547
  2023-02-28 18:29:07 - RESET: Reset the project to factory state ...
548
548
  2023-02-28 18:29:07 - RESET: Be patient, this will take a while ...
549
549
  2023-02-28 18:29:08 - RESET:
550
- 2023-02-28 18:29:08 - RESET: > j1@2023.5.2 reset C:\Users\xxx\j1-projects\my-starter
550
+ 2023-02-28 18:29:08 - RESET: > j1@2023.7.0 reset C:\Users\xxx\j1-projects\my-starter
551
551
  2023-02-28 18:29:08 - RESET: > run-s -s reset:*
552
552
  2023-02-28 18:29:08 - RESET:
553
553
  2023-02-28 18:29:08 - RESET: Reset project to factory state ..
@@ -53,7 +53,7 @@ environment: development
53
53
  # ------------------------------------------------------------------------------
54
54
  # Sets the build version of the site
55
55
  #
56
- version: 2023.5.2
56
+ version: 2023.7.0
57
57
 
58
58
  # copyright
59
59
  # ------------------------------------------------------------------------------
@@ -230,7 +230,7 @@ keywords: >
230
230
  sites, static, jamstack, bootstap
231
231
 
232
232
  # Crawling/Indexing ENABLED for default. Settings managed page-wise using
233
- # frontmatter defaults or by page default settings to make sure that only
233
+ # front matter defaults or by page default settings to make sure that only
234
234
  # WANTED pages gets crawled.
235
235
  #
236
236
  robots:
@@ -293,7 +293,7 @@ favicon:
293
293
  #
294
294
  # NOTE:
295
295
  # The permalink style can individualy configured by
296
- # frontmatter variables. It is highly recommended to use a
296
+ # front matter variables. It is highly recommended to use a
297
297
  # "pretty style" for individual permalinks as well. For that
298
298
  # reason, the permalink should always have a trailing backslash.
299
299
  #
@@ -595,7 +595,7 @@ collections:
595
595
  permalink: /collections/public/:collection/:name/
596
596
 
597
597
  # ------------------------------------------------------------------------------
598
- # FRONTMATTER defaults
598
+ # FRONT MATTER defaults
599
599
  #
600
600
  # Using the YAML Front Matter is a way the (individual) configuration
601
601
  # for post and pages can be specified. Very often, a lot of config
@@ -661,6 +661,7 @@ defaults:
661
661
  index: true
662
662
  follow: true
663
663
 
664
+ tts: true
664
665
  toc: true
665
666
  canonical: false
666
667
  fab_menu_id: open_toc
@@ -681,10 +682,10 @@ defaults:
681
682
  #
682
683
 
683
684
  # ----------------------------------------------------------------------------
684
- # PUBLIC - FEATURED
685
+ # PUBLIC
685
686
  #
686
687
  - scope:
687
- path: posts/public/featured
688
+ path: posts/public
688
689
  type: posts
689
690
 
690
691
  values:
@@ -706,6 +707,7 @@ defaults:
706
707
  index: true
707
708
  follow: true
708
709
 
710
+ tts: true
709
711
  toc: true
710
712
  canonical: false
711
713
  fab_menu_id: open_toc
@@ -720,44 +722,6 @@ defaults:
720
722
  - toccer:
721
723
  collapseDepth: 3
722
724
 
723
- # ----------------------------------------------------------------------------
724
- # PUBLIC - SERIES
725
- #
726
- - scope:
727
- type: posts
728
- path: posts/public/series
729
-
730
- values:
731
- layout: post
732
- compress: true
733
-
734
- author:
735
- name: Juergen Adams
736
- url: https://jekyll.one/
737
-
738
- logo: /assets/images/icons/j1/j1-512x512.png
739
- image:
740
- path: /assets/images/promo/home/screenshot.jpg
741
- width: 1200
742
- height: 800
743
-
744
- robots:
745
- index: true
746
- follow: true
747
-
748
- toc: true
749
- canonical: false
750
- fab_menu_id: open_toc
751
- comments: false
752
- scrollbar: false
753
- page_navigation: true
754
- personalization: false
755
- exclude_from_search: false
756
-
757
- resource_options:
758
- - toccer:
759
- collapseDepth: 3
760
-
761
725
  # ----------------------------------------------------------------------------
762
726
  # Collections
763
727
  #
@@ -771,6 +735,7 @@ defaults:
771
735
 
772
736
  values:
773
737
  layout: page
738
+ tts: false
774
739
  canonical: false
775
740
 
776
741
  # ----------------------------------------------------------------------------
@@ -782,6 +747,7 @@ defaults:
782
747
 
783
748
  values:
784
749
  layout: page
750
+ tts: false
785
751
  canonical: false
786
752
 
787
753
  - scope:
@@ -790,6 +756,7 @@ defaults:
790
756
 
791
757
  values:
792
758
  layout: page
759
+ tts: false
793
760
  canonical: false
794
761
 
795
762
  - scope:
@@ -798,6 +765,7 @@ defaults:
798
765
 
799
766
  values:
800
767
  layout: page
768
+ tts: false
801
769
  canonical: false
802
770
 
803
771
 
@@ -114,20 +114,21 @@ settings:
114
114
  create modern dynamic websites. The template system gives hobbyists
115
115
  and professionals a clean implementation for starting new projects.
116
116
  JekyllOne is open source, and the modules packed are also free
117
- to use. No license issues for private or professional purposes.
117
+ to use.
118
118
  </p>
119
119
  <p>
120
120
  J1 Starter Theme is designed to be lightweight and easily customizable.
121
121
  It comes with a basic structure and styling out of the box so that you
122
122
  can create a website quickly and easily, without having to worry about
123
- the code. It features a modern, minimalist design with a focus on usability
123
+ the code.
124
+ </p>
125
+ <p>
126
+ It features a modern, minimalist design with a focus on usability
124
127
  and accessibility. Additionally, it comes with built-in support for search
125
- engine optimization (SEO) and social media integration, making it easy to
128
+ engine optimization and social media integration, making it easy to
126
129
  get your site off the ground and running.
127
130
  </p>
128
- <p class="tagline">
129
- <b>Explore what's possible if you go for modern static websites.</b>
130
- </p>
131
+ <p class="mt-4 fw-bold">Explore what is possible when using static webs.</p>
131
132
  buttons:
132
133
 
133
134
  - name: Roundtrip
@@ -24,7 +24,6 @@ description:
24
24
  scope: User settings
25
25
  location: _data/blocks/panel.yml
26
26
 
27
-
28
27
  # ------------------------------------------------------------------------------
29
28
  # SETTINGS
30
29
  #
@@ -72,8 +71,8 @@ settings:
72
71
  a portfolio website to an e-commerce store. Static websites
73
72
  are becoming increasingly popular because they are faster,
74
73
  more secure, and easier to maintain than traditional dynamic
75
- websites. Static websites are also great for SEO (search engine
76
- optimization) as they are easier for search engines to crawl
74
+ websites. Static websites are also great for search engine
75
+ optimization as they are easier for search engines to crawl
77
76
  and index.
78
77
  </p>
79
78
  <p class="tagline">
@@ -414,22 +413,25 @@ settings:
414
413
  People quite often ask if static websites make sense for
415
414
  anything beyond a one-page website. Some others see in
416
415
  static websites the stone age of the World Wide Web.
417
- What's about static websites today? What's achievable?
416
+ What is achievable today?
417
+ </p>
418
+ <p>
418
419
  This board highlights top features, which make static webs
419
420
  not only an option but a state-of-the-art technology to create
420
421
  fast, secure, and sophisticated websites for many use cases.
421
422
  </p>
422
423
  <ul>
423
424
  <li>
424
- Current Technology and Design. Excellent performance on all devices.
425
+ <p style="margin-bottom: 0;">Current Technology and Design. Excellent performance on all devices.</p>
425
426
  </li>
426
427
  <li>
427
- Fully Responsive. Best results on PCs, Tablets, and SmartPhones.
428
+ <p style="margin-bottom: 0;">Fully Responsive. Best results on PCs, Tablets, and SmartPhones.</p>
428
429
  </li>
429
430
  <li>
430
- Start in no time. No programming is needed using Jekyll One.
431
+ <p style="margin-bottom: 0;">Start in no time. No programming is needed using Jekyll One.</p>
431
432
  </li>
432
433
  </ul>
434
+ <p class="fw-bold mt-4 mb-5">Explore what the J1 Template system can do for your next website.</p>
433
435
 
434
436
  wave:
435
437
  top:
@@ -463,14 +465,13 @@ settings:
463
465
  header_translate: notranslate
464
466
  text: >
465
467
  <p class="dropcap">
466
- Current software counts. Excellent tools in their latest versions
467
- make the rocket engine for each and every website. Jekyll One
468
- is using current software in their latest versions. All of them
469
- are OpenSource and free to use. No license issues for private or
470
- professional use.
468
+ Excellent tools in their latest versions make the
469
+ rocket engine for each and every website.
471
470
  </p>
472
- <p>
473
- The base of J1.
471
+ <p class="mt-3">
472
+ J1 Theme is based on ready-to-use frameworks, extensions,
473
+ and modules. All build-in frameworks are are open source,
474
+ well known, and and free to use.
474
475
  </p>
475
476
 
476
477
  services:
@@ -480,20 +481,15 @@ settings:
480
481
  id: A1
481
482
  description: >
482
483
  <p>
483
- The theme J1 Theme is based on the <i>Ruby</i> language of version
484
- 2.x. For sure, not the latest language version for <i>Ruby</i> but the
485
- supported platform for the latest <i>Jekyll</i> software.
484
+ The J1 Theme is based on the <i>Ruby</i> language of the latest
485
+ versions of V3. Websites created by Jekyll One Theme are managed
486
+ by NodeJS. The built-in script engine provided simplifies the management
487
+ of J1 projects a lot. Well-known commands typically used to manage
488
+ software projects are at your fingertips.
486
489
  </p>
487
490
  <p>
488
- Websites created by Jekyll One Theme are projects managed by NodeJS. The
489
- built-in script engine provided by the package manager npm of NodeJS
490
- simplifies the management of J1 projects a lot. Well-known commands
491
- typically used to manage software projects are at your fingertips.
492
491
  Easy to learn, easy to remember. Commands support creators to
493
- concentrate on the content.
494
- </p>
495
- <p>
496
- Not get lost in project management.
492
+ concentrate on the content and not get lost in project management.
497
493
  </p>
498
494
  <p>
499
495
  <i class="mdib mdib-language-ruby mdib-24px md-blue-700 ml-3 mr-2"></i>
@@ -562,15 +558,15 @@ settings:
562
558
  for best results on PCs, Tablets, and SmartPhones.
563
559
  </p>
564
560
  <p>
565
- Mobile devices are great for Apps designed for these platforms. Using a web
561
+ Mobile devices are great for apps designed for these platforms. Using a web
566
562
  browser to surf websites is often frustrating on mobiles. Jekyll One provides
567
563
  navigation systems that cover both worlds: desktops and mobiles.
568
564
  </p>
569
565
  <p>
570
566
  Performance is a key factor for all users. To not get visitors lost, J1
571
567
  webs are highly optimized. All Websites will achieve best Google Lighthouse
572
- Scores for performance, accessibility, best practices, and SEO at a
573
- green level.
568
+ scores for performance, accessibility, best practices, and search
569
+ engine optimization at a green level.
574
570
  </p>
575
571
  <p>
576
572
  Support your visitors.
@@ -601,14 +597,14 @@ settings:
601
597
  header_translate: notranslate
602
598
  text: >
603
599
  <p class="dropcap">
604
- For Jekyll, a huge number of themes are available that cover
605
- all typical use cases for websites. The bad story: most of them
606
- require programming and low-level customization. Deep knowledge
607
- of Jekyll and valuable experience using HTML, CSS, and Javascript
608
- is required.
600
+ For Jekyll, many modules like sliders and galleries are
601
+ available to cover typical use cases for websites.
609
602
  </p>
610
- <p>
611
- The ease of using J1.
603
+ <p class="mt-3">
604
+ All modules are fully integrated and easily used by simple
605
+ configuration, which makes programming <b>not</b> needed.
606
+ The theme provides many building blocks to create modern web
607
+ pages in minutes.
612
608
  </p>
613
609
  services:
614
610
 
@@ -617,7 +613,7 @@ settings:
617
613
  id: B1
618
614
  description: >
619
615
  <p>
620
- The theme J1 provides a large number of building blocks to create modern
616
+ The J1 theme provides a large number of building blocks to create modern
621
617
  web pages in minutes. The base idea of the J1 Theme is to give all people
622
618
  a toolset at their hands to create a website with no need to start web
623
619
  development or web design from the beginning.
@@ -743,10 +739,12 @@ settings:
743
739
  description_properties: mt-3 mr-3 mb-5
744
740
  description: >
745
741
  <p class="dropcap">
746
- Explore the blog and find interesting articles around Jekyll and
747
- website creation processes in general. And this blog is an excellent
748
- example of how J1 and Jekyll can be used for blogging.
742
+ Explore the blog and find interesting articles about
743
+ Jekyll and general website creation processes. And this
744
+ blog is an excellent example of how J1 and Jekyll can be
745
+ used for blogging.
749
746
  </p>
747
+ <p class="fw-bold mb-4">Read more on how Jekyll can be used for the powerful websites of today.</p>
750
748
  wave:
751
749
  top:
752
750
  enabled: false
@@ -253,7 +253,7 @@ lanes:
253
253
  type: sync
254
254
  base: _includes/google
255
255
  path: static
256
- file: google_ad_5128488466.html
256
+ file: google_ad__your-slot-id.html
257
257
 
258
258
  # ----------------------------------------------------------------------------
259
259
  # DIVIDER banner