j1-template 2024.3.24 → 2024.3.25

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 (168) hide show
  1. checksums.yaml +4 -4
  2. data/assets/data/apps/amplitudehtml +1147 -0
  3. data/assets/data/apps/gallery.html +342 -0
  4. data/assets/data/{masonry.html → apps/masonry.html} +22 -9
  5. data/assets/data/apps/swiper.html +901 -0
  6. data/assets/data/masonry_app.html +521 -0
  7. data/assets/theme/j1/modules/lightGallery/css/theme/uno/uno.css +21 -13
  8. data/assets/theme/j1/modules/lightGallery/css/theme/uno/uno.min.css +1 -2
  9. data/assets/theme/j1/modules/lightGallery/js/lightgallery.js +14 -13
  10. data/assets/theme/j1/modules/lightGallery/js/lightgallery.min.js +1 -1
  11. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-video.js +265 -226
  12. data/assets/theme/j1/modules/lightGallery/js/plugins/lg-video.min.js +1 -1
  13. data/assets/theme/j1/modules/videojs/css/themes/uno.css +12 -2
  14. data/assets/theme/j1/modules/videojs/css/videojs.css +2 -3
  15. data/assets/theme/j1/modules/videojs/css/videojs.min.css +1 -1
  16. data/assets/theme/j1/modules/videojs/plugins/controls/zoom/css/zoom.css +55 -55
  17. data/assets/theme/j1/modules/videojs/plugins/controls/zoom/css/zoom.min.css +2 -1
  18. data/assets/theme/j1/modules/videojs/plugins/controls/zoom/js/zoom.js +590 -382
  19. data/assets/theme/j1/modules/videojs/plugins/controls/zoom/js/zoom.min.js +1 -1
  20. data/assets/theme/j1/modules/videojs/plugins/j1_core/template.min.js +31 -0
  21. data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/{simple.html → index.html} +11 -10
  22. data/assets/theme/j1/modules/videojs/plugins/players/dm/js/dailymotion.0.js +647 -0
  23. data/assets/theme/j1/modules/videojs/plugins/players/dm/js/dailymotion.1.js +653 -0
  24. data/assets/theme/j1/modules/videojs/plugins/players/vm/!examples/{player → iframe_api}/index.html +3 -3
  25. data/assets/theme/j1/modules/videojs/plugins/players/vm/!examples/{index.html → videojs_api/index.html} +7 -3
  26. data/assets/theme/j1/modules/videojs/plugins/players/vm/api/js/v2.21.0/vimeo.js +3562 -0
  27. data/assets/theme/j1/modules/videojs/plugins/players/vm/api/js/v2.21.0/vimeo.min.js +36 -0
  28. data/assets/theme/j1/modules/videojs/plugins/players/vm/api/js/vimeo.js +451 -1849
  29. data/assets/theme/j1/modules/videojs/plugins/players/vm/api/js/vimeo.min.js +2 -14
  30. data/assets/theme/j1/modules/videojs/plugins/players/vm/js/LICENSE +21 -0
  31. data/assets/theme/j1/modules/videojs/plugins/players/vm/js/README.md +54 -0
  32. data/assets/theme/j1/modules/videojs/plugins/players/vm/js/old/vimeo.js +666 -0
  33. data/assets/theme/j1/modules/videojs/plugins/players/vm/js/old/vimeo.min.js +28 -0
  34. data/assets/theme/j1/modules/videojs/plugins/players/vm/js/vimeo.js +2318 -548
  35. data/assets/theme/j1/modules/videojs/plugins/players/vm/js/vimeo.min.js +12 -18
  36. data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/{simple.html → index.html} +15 -6
  37. data/assets/theme/j1/modules/videojs/plugins/players/yt/js/youtube.js +12 -5
  38. data/assets/theme/j1/modules/videojs/plugins/players/yt/js/youtube.min.js +1 -1
  39. data/lib/j1/version.rb +1 -1
  40. data/lib/starter_web/Gemfile +1 -1
  41. data/lib/starter_web/README.md +5 -5
  42. data/lib/starter_web/_config.yml +2 -2
  43. data/lib/starter_web/_data/blocks/banner.yml +1 -1
  44. data/lib/starter_web/_data/j1_config.yml +1 -1
  45. data/lib/starter_web/_data/layouts/home.yml +1 -1
  46. data/lib/starter_web/_data/modules/authentication.yml +1 -2
  47. data/lib/starter_web/_data/modules/defaults/masonry.yml +1 -1
  48. data/lib/starter_web/_data/modules/gallery.yml +35 -24
  49. data/lib/starter_web/_data/modules/log4javascript.yml +1 -1
  50. data/lib/starter_web/_data/modules/masonry.yml +30 -14
  51. data/lib/starter_web/_data/modules/navigator.yml +1 -1
  52. data/lib/starter_web/_data/modules/navigator_menu.yml +12 -8
  53. data/lib/starter_web/_data/templates/feed.xml +1 -1
  54. data/lib/starter_web/_plugins/asciidoctor/dailymotion-block.rb +206 -24
  55. data/lib/starter_web/_plugins/index/lunr.rb +1 -1
  56. data/lib/starter_web/assets/image/module/attic/1920x1280/admin-dashboard-bootstrap.jpg +0 -0
  57. data/lib/starter_web/assets/image/module/attic/1920x1280/alexander-redl.jpg +0 -0
  58. data/lib/starter_web/assets/image/module/attic/1920x1280/alexander-shatov.jpg +0 -0
  59. data/lib/starter_web/assets/image/module/attic/1920x1280/alexey-ruban.jpg +0 -0
  60. data/lib/starter_web/assets/image/module/attic/1920x1280/andrea-badino.jpg +0 -0
  61. data/lib/starter_web/assets/image/module/attic/1920x1280/bootstrap-modal.jpg +0 -0
  62. data/lib/starter_web/assets/image/module/attic/1920x1280/bp-miller.jpg +0 -0
  63. data/lib/starter_web/assets/image/module/attic/1920x1280/brad-neathery.jpg +0 -0
  64. data/lib/starter_web/assets/image/module/attic/1920x1280/brigitta-schneiter.jpg +0 -0
  65. data/lib/starter_web/assets/image/module/attic/1920x1280/build-with-gemini.jpg +0 -0
  66. data/lib/starter_web/assets/image/module/attic/1920x1280/clem-onojeghuo.jpg +0 -0
  67. data/lib/starter_web/assets/image/module/attic/1920x1280/eleni-afiontzi.jpg +0 -0
  68. data/lib/starter_web/assets/image/module/attic/1920x1280/fly-d.jpg +0 -0
  69. data/lib/starter_web/assets/image/module/attic/1920x1280/guillaume-bolduc.jpg +0 -0
  70. data/lib/starter_web/assets/image/module/attic/1920x1280/ideas-start-here-1920x1280.jpg +0 -0
  71. data/lib/starter_web/assets/image/module/attic/1920x1280/isaac-davis.jpg +0 -0
  72. data/lib/starter_web/assets/image/module/attic/1920x1280/j1-launch.jpg +0 -0
  73. data/lib/starter_web/assets/image/module/attic/1920x1280/j1-mockup.jpg +0 -0
  74. data/lib/starter_web/assets/image/module/attic/1920x1280/john-schnobrich-2.jpg +0 -0
  75. data/lib/starter_web/assets/image/module/attic/1920x1280/josep-martins.jpg +0 -0
  76. data/lib/starter_web/assets/image/module/attic/1920x1280/josh-liu.jpg +0 -0
  77. data/lib/starter_web/assets/image/module/attic/1920x1280/kelly-sikkemal.jpg +0 -0
  78. data/lib/starter_web/assets/image/module/attic/1920x1280/kira-auf-der-heide.jpg +0 -0
  79. data/lib/starter_web/assets/image/module/attic/1920x1280/kristopher-roller.jpg +0 -0
  80. data/lib/starter_web/assets/image/module/attic/1920x1280/markus-spiske.jpg +0 -0
  81. data/lib/starter_web/assets/image/module/attic/1920x1280/martin-sanchez.jpg +0 -0
  82. data/lib/starter_web/assets/image/module/attic/1920x1280/material_symbols.jpg +0 -0
  83. data/lib/starter_web/assets/image/module/attic/1920x1280/matthaeus.jpg +0 -0
  84. data/lib/starter_web/assets/image/module/attic/1920x1280/melanie-deziel.jpg +0 -0
  85. data/lib/starter_web/assets/image/module/attic/1920x1280/nasa.jpg +0 -0
  86. data/lib/starter_web/assets/image/module/attic/1920x1280/quino-al-2.jpg +0 -0
  87. data/lib/starter_web/assets/image/module/attic/1920x1280/stories-ink-tattoo-care.jpg +0 -0
  88. data/lib/starter_web/assets/image/module/attic/1920x1280/towfiqu-barbhuiya.jpg +0 -0
  89. data/lib/starter_web/collections/posts/public/featured/_posts/0000-00-00-welcome-to-j1.adoc.erb +1 -1
  90. data/lib/starter_web/collections/posts/public/featured/_posts/2022-02-01-about-j1.adoc +2 -2
  91. data/lib/starter_web/collections/posts/public/featured/_posts/2023-10-18-url-types.adoc +2 -2
  92. data/lib/starter_web/config.ru +1 -1
  93. data/lib/starter_web/dot.gitattributes +1 -1
  94. data/lib/starter_web/index.html +8 -8
  95. data/lib/starter_web/package.json +1 -1
  96. data/lib/starter_web/pages/public/about/features.adoc +5 -5
  97. data/lib/starter_web/pages/public/about/reporting_issues.adoc +5 -5
  98. data/lib/starter_web/pages/public/about/site.adoc +14 -10
  99. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/000_intro.adoc +1 -1
  100. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/100_converter.adoc +1 -1
  101. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/200_themes.adoc +1 -1
  102. data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +1 -1
  103. data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +1 -1
  104. data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +1 -1
  105. data/lib/starter_web/pages/public/blog/navigator/archive/allview.html +1 -1
  106. data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +1 -1
  107. data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +1 -1
  108. data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +1 -1
  109. data/lib/starter_web/pages/public/blog/navigator/index.html +1 -1
  110. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_biography.adoc +1 -1
  111. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_fantasy.adoc +1 -1
  112. data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_romance.adoc +1 -1
  113. data/lib/starter_web/pages/public/learn/bookshelf/jekyll_collections.adoc +1 -1
  114. data/lib/starter_web/pages/public/learn/bookshelf/viewer_all_books.adoc +1 -1
  115. data/lib/starter_web/pages/public/learn/where_to_go.adoc +1 -1
  116. data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +3 -3
  117. data/lib/starter_web/pages/public/legal/en/200_impress.adoc +3 -3
  118. data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +3 -3
  119. data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +3 -3
  120. data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +1 -4
  121. data/lib/starter_web/pages/public/plans/plans.adoc +1 -1
  122. data/lib/starter_web/pages/public/tools/previewer/preview_bootstrap_theme.adoc +1 -1
  123. data/lib/starter_web/pages/public/tools/tester/videojs_macro_tester.adoc +116 -43
  124. data/lib/starter_web/pages/public/tour/_includes/documents/419_advanced_modals_demo.asciidoc +1 -1
  125. data/lib/starter_web/pages/public/tour/video_data.adoc +28 -22
  126. metadata +25 -49
  127. data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/dailymotion-controls.html +0 -18
  128. data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/dailymotion-javascript.html +0 -28
  129. data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/dailymotion-playlist.html +0 -19
  130. data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/global-parameters.html +0 -30
  131. data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/switch.html +0 -39
  132. data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/global-parameters.html +0 -34
  133. data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/switch.html +0 -39
  134. data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/youtube-controls.html +0 -20
  135. data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/youtube-javascript.html +0 -29
  136. data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/youtube-list.html +0 -21
  137. data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/youtube-playlist.html +0 -21
  138. data/lib/starter_web/assets/image/module/attic/1920x1280/j1-content-mockup-2.jpg +0 -0
  139. data/lib/starter_web/assets/image/module/attic/1920x1280/j1-content-mockup-3.jpg +0 -0
  140. data/lib/starter_web/assets/image/module/attic/1920x1280/j1-starter-mockup-1.jpg +0 -0
  141. data/lib/starter_web/assets/image/module/attic/admin-dashboard-bootstrap-1280x600.jpg +0 -0
  142. data/lib/starter_web/assets/image/module/attic/alice-donovan-rouse-2.jpg +0 -0
  143. data/lib/starter_web/assets/image/module/attic/building-blocks-1920x1280.jpg +0 -0
  144. data/lib/starter_web/assets/image/module/attic/christina-1920x1280.jpg +0 -0
  145. data/lib/starter_web/assets/image/module/attic/franck-1920x1280.jpg +0 -0
  146. data/lib/starter_web/assets/image/module/attic/giammarco-boscaro-1920x1280.jpg +0 -0
  147. data/lib/starter_web/assets/image/module/attic/jessica-ruscello-1920x1280.jpg +0 -0
  148. data/lib/starter_web/assets/image/module/attic/joanna-kosinska-1920x1280.jpg +0 -0
  149. data/lib/starter_web/assets/image/module/attic/leon-1920x1280.jpg +0 -0
  150. data/lib/starter_web/assets/image/module/attic/lianhao-1920x1280.jpg +0 -0
  151. data/lib/starter_web/assets/image/module/attic/library-1920x1280.jpg +0 -0
  152. data/lib/starter_web/assets/image/module/attic/markus-krisetya-1920x1280.jpg +0 -0
  153. data/lib/starter_web/assets/image/module/attic/markus-spiske-1920x1280.jpg +0 -0
  154. data/lib/starter_web/assets/image/module/attic/markus-spiske4-1920x1280.jpg +0 -0
  155. data/lib/starter_web/assets/image/module/attic/matthaeus-1920x1280.jpg +0 -0
  156. data/lib/starter_web/assets/image/module/attic/matthew-dockery-1920x1280.jpg +0 -0
  157. data/lib/starter_web/assets/image/module/attic/no-time-1920x1280.jpg +0 -0
  158. data/lib/starter_web/assets/image/module/attic/rirri-1920x1280.jpg +0 -0
  159. data/lib/starter_web/assets/image/module/attic/shubham-dhage-1920x1280.jpg +0 -0
  160. data/lib/starter_web/assets/image/module/attic/shutterstock_sponsor-1920x1280.jpg +0 -0
  161. data/lib/starter_web/assets/image/module/attic/sigmund-1920x1280.jpg +0 -0
  162. data/lib/starter_web/assets/image/module/attic/szabo-viktor-1920x1280.jpg +0 -0
  163. data/lib/starter_web/assets/image/module/attic/themes-1920x1280-bw.jpg +0 -0
  164. data/lib/starter_web/assets/image/module/attic/tldr-1920x800.jpg +0 -0
  165. data/lib/starter_web/assets/image/module/attic/vladislav-klapin-1920x1280.jpg +0 -0
  166. data/lib/starter_web/assets/image/module/attic/yellow-cactus-1920x1280.jpg +0 -0
  167. /data/assets/theme/j1/modules/videojs/plugins/players/vm/{LICENSE → js/old/LICENSE} +0 -0
  168. /data/assets/theme/j1/modules/videojs/plugins/players/vm/{README.md → js/old/README.md} +0 -0
@@ -711,18 +711,18 @@ settings:
711
711
  - video:
712
712
  name: Planet Earth II
713
713
  type: youtube
714
+ api: videojs # jadams !!!
714
715
  size: 1280-720
715
- source: //youtu.be/IUN664s7N-c
716
+ source: //youtube.com/IUN664s7N-c
716
717
  pinterest_prefix: Pin video
717
718
  tweet_prefix: Try video
718
719
  description: >
719
- <h5>Beauty of Nature</h5>
720
- <h6>
720
+ <h2>Beauty of Nature</h2>
721
+ <h3>
721
722
  The BBC America presents breathtaking landscapes of
722
723
  amazing habitats from their Planet Earth II series
723
724
  on YouTube
724
- </h6>
725
- <br>
725
+ </h3>
726
726
  poster:
727
727
  style: img-responsive
728
728
  source: //img.youtube.com/vi/IUN664s7N-c/maxresdefault.jpg
@@ -739,9 +739,11 @@ settings:
739
739
  pinterest_prefix: Pin video
740
740
  tweet_prefix: Try video
741
741
  description: >
742
- <h5>Amazing Nature</h5>
743
- <h6>Video by <a target='_blank' href='//vimeo.com/charliekaye'>Charlie Kaye.</a> on Vimeo</h6>
744
- <br>
742
+ <h2>Amazing Nature</h2>
743
+ <h3>
744
+ Video by <a target='_blank' href='//vimeo.com/charliekaye'>Charlie Kaye.</a>
745
+ on Vimeo
746
+ </h3>
745
747
  poster:
746
748
  style: img-responsive
747
749
  source: /assets/video/poster/vimeo/amazing_nature.jpg
@@ -758,9 +760,8 @@ settings:
758
760
  pinterest_prefix: Pin video
759
761
  tweet_prefix: Try video
760
762
  description: >
761
- <h5>SELF Channel</h5>
762
- <h6>Beginner Mat Pilates</h6>
763
- <br>
763
+ <h2>SELF Channel</h2>
764
+ <h3>Beginner Mat Pilates</h3>
764
765
  poster:
765
766
  style: img-responsive
766
767
  source: /assets/video/poster/dailymotion/pilates.jpg
@@ -778,9 +779,24 @@ settings:
778
779
  pinterest_prefix: Pin video
779
780
  tweet_prefix: Try video
780
781
  description: >
781
- <h5>Peck Pocketed by Kevin Herron</h5>
782
- <h6>Student Academy Award winning cartoon clip on VideoJS</h6>
783
- <br>
782
+ <h2>Peck Pocketed by Kevin Herron</h2>
783
+ <h3>Student Academy Award winning cartoon clip on VideoJS</h3>
784
+
785
+ tracks:
786
+ - track:
787
+ default: true # Indicates that the track is to be enabled if the user's preferences do not indicate that another track would be more appropriate
788
+ kind: captions
789
+ srclang: en # Code for the language of the text track
790
+ label: English # Descriptive text for the track that will used in the user interface (player)
791
+ src: /assets/video/tracks/html5/peck_pocketed/captions/video.vtt
792
+
793
+ - track:
794
+ default: true # Indicates that the track is to be enabled if the user's preferences do not indicate that another track would be more appropriate
795
+ kind: chapters
796
+ srclang: en # Code for the language of the text track
797
+ label: Chapters # Descriptive text for the track that will used in the user interface (player)
798
+ src: /assets/video/tracks/html5/peck_pocketed/chapters/video.vtt
799
+
784
800
  poster:
785
801
  style: img-responsive
786
802
  source: peck_pocketed.jpg
@@ -217,4 +217,4 @@ settings:
217
217
  target: none
218
218
 
219
219
  # ------------------------------------------------------------------------------
220
- # END config
220
+ # END config
@@ -814,18 +814,22 @@
814
814
  #
815
815
  - item: About
816
816
  sublevel:
817
- - title: Starter
817
+
818
+ - title: This Site
818
819
  icon: home-variant-outline
819
820
  href: /pages/public/about/starter/
820
- - title: Issues
821
- icon: bug
822
- href: /pages/public/about/reporting_issues/
821
+
822
+ - title: Privacy
823
+ icon: heart
824
+ href: /pages/public/legal/en/privacy/
825
+
823
826
  - title: Features
824
827
  icon: wrench
825
828
  href: /pages/public/about/features/
826
- - title: Privacy
827
- icon: heart
828
- href: /pages/public/legal/en/privacy/
829
+
830
+ - title: Issues
831
+ icon: bug
832
+ href: /pages/public/about/reporting_issues/
829
833
 
830
834
  # ------------------------------------------------------------------------------
831
- # END config
835
+ # END config
@@ -57,7 +57,7 @@
57
57
  <id>{{ page.url | absolute_url | xml_escape }}</id>
58
58
  <post_limited>{{ limit_posts }}</post_limited>
59
59
  <template_name>J1 Theme</template_name>
60
- <template_version>2024.3.24</template_version>
60
+ <template_version>2024.3.25</template_version>
61
61
 
62
62
  {% assign title = site.title | default: site.name %}
63
63
  {% if page.collection != "posts" %}
@@ -37,35 +37,60 @@ Asciidoctor::Extensions.register do
37
37
  use_dsl
38
38
 
39
39
  named :dailymotion
40
- name_positional_attributes 'caption', 'theme', 'role'
40
+ name_positional_attributes 'caption', 'start','poster', 'theme', 'custom_buttons', 'role'
41
41
  default_attrs 'caption' => 'true',
42
+ 'start' => '00:00:00',
43
+ 'poster' => '/assets/image/icon/videojs/videojs-poster.png',
42
44
  'theme' => 'uno',
43
- 'role' => 'mt-3 mb-3'
45
+ 'custom_buttons' => true,
46
+ 'role' => 'mt-4 mb-5'
47
+
44
48
 
45
49
  def process parent, target, attributes
46
50
 
51
+ # ========================================================================
52
+ # load VideoJS configuration data
53
+ # ------------------------------------------------------------------------
54
+ # NOTE:
55
+ # Settings folder _data is NOT available in the website
56
+ #-------------------------------------------------------------------------
57
+ #
58
+ current_path = File.expand_path(Dir.getwd)
59
+ default_config_path = File.join(current_path, '/_data/modules/defaults')
60
+ user_config_path = File.join(current_path, '/_data/modules')
61
+
62
+ videojs_config_file_name = 'videojs.yml'
63
+ videojs_default_config_file = File.join(default_config_path, videojs_config_file_name)
64
+ videojs_user_config_file = File.join(user_config_path, videojs_config_file_name)
65
+
66
+ videojsDefaultSettings = YAML::load(File.open(videojs_default_config_file))
67
+ videojsUserSettings = YAML::load(File.open(videojs_user_config_file))
68
+ videojsDefaultSettingsJson = videojsDefaultSettings.to_json;
69
+ videojsUserSettingsJson = videojsUserSettings.to_json;
70
+
71
+ # ========================================================================
72
+ # set plugin specific data
73
+ # ------------------------------------------------------------------------
74
+ #
47
75
  chars = [('a'..'z'), ('A'..'Z'), ('0'..'9')].map(&:to_a).flatten
48
76
  video_id = (0...11).map { chars[rand(chars.length)] }.join
49
77
 
50
78
  title_html = (attributes.has_key? 'title') ? %(<div class="video-title"> <i class="mdib mdib-video mdib-24px mr-2"></i> #{attributes['title']} </div>\n) : nil
51
79
  poster_image = (poster = attributes['poster']) ? %(#{poster}) : nil
52
- theme_name = (theme = attributes['theme']) ? %(#{theme}) : nil
53
- caption_enabled = (caption = attributes['caption']) ? true : false
54
-
55
- poster_attr = %(poster="#{poster_image}")
56
- if attributes['poster'] == 'auto'
57
- poster_attr = ''
58
- end
80
+ theme_name = (theme = attributes['theme']) ? %(#{theme}) : nil
81
+ custom_buttons = (custom_buttons = attributes['custom_buttons']) ? %(#{custom_buttons}) : nil
82
+ caption_enabled = (caption = attributes['caption']) ? true : false
59
83
 
60
84
  html = %(
61
- <div class="dailymotion-player bottom #{attributes['role']}">
85
+ <div class="youtube-player bottom #{attributes['role']}">
62
86
  #{title_html}
63
87
  <video
64
88
  id="#{video_id}"
65
89
  class="video-js vjs-theme-#{theme_name}"
66
90
  controls
67
91
  width="640" height="360"
68
- #{poster_attr}
92
+ poster="#{poster_image}"
93
+ alt="#{attributes['title']}"
69
94
  aria-label="#{attributes['title']}"
70
95
  data-setup='{
71
96
  "fluid" : true,
@@ -74,7 +99,7 @@ Asciidoctor::Extensions.register do
74
99
  ],
75
100
  "sources": [{
76
101
  "type": "video/dailymotion",
77
- "src": "//dailymotion.com/video/#{target}"
102
+ "src": "//dailymotion.com/video/#{target}"
78
103
  }],
79
104
  "controlBar": {
80
105
  "pictureInPictureToggle": false,
@@ -89,6 +114,38 @@ Asciidoctor::Extensions.register do
89
114
  <script>
90
115
  $(function() {
91
116
 
117
+ // =================================================================
118
+ // take over VideoJS configuration data (JSON data from Ruby)
119
+ // -----------------------------------------------------------------
120
+ var videojsDefaultConfigJson = '#{videojsDefaultSettingsJson}';
121
+ var videojsUserConfigJson = '#{videojsUserSettingsJson}';
122
+
123
+ // =================================================================
124
+ // create config objects from JSON data
125
+ // -----------------------------------------------------------------
126
+ var videojsDefaultSettings = JSON.parse(videojsDefaultConfigJson);
127
+ var videojsUserSettings = JSON.parse(videojsUserConfigJson);
128
+
129
+ // merge config objects (jQuery)
130
+ var videojsConfig = $.extend(true, {}, videojsDefaultSettings.defaults, videojsUserSettings.settings);
131
+
132
+ // =================================================================
133
+ // VideoJS player settings
134
+ // -----------------------------------------------------------------
135
+ const vjsPlayerType = 'ytp';
136
+ const vjsPlaybackRates = videojsConfig.playbackRates.values;
137
+
138
+ // =================================================================
139
+ // VideoJS plugin settings
140
+ // -----------------------------------------------------------------
141
+ const piAutoCaption = videojsConfig.plugins.autoCaption;
142
+ const piHotKeys = videojsConfig.plugins.hotKeys;
143
+ const piSkipButtons = videojsConfig.plugins.skipButtons;
144
+ const piZoomButtons = videojsConfig.plugins.zoomButtons;
145
+
146
+ // =================================================================
147
+ // helper functions
148
+ // -----------------------------------------------------------------
92
149
  function addCaptionAfterImage(imageSrc) {
93
150
  const image = document.querySelector(`img[src="${imageSrc}"]`);
94
151
 
@@ -101,41 +158,166 @@ Asciidoctor::Extensions.register do
101
158
  // insert div|caption container AFTER the image
102
159
  image.parentNode.insertBefore(newDiv, image.nextSibling);
103
160
  } else {
104
- console.error(`Kein Bild mit src="${imageSrc}" gefunden.`);
161
+ console.error(`No image found at: '${imageSrc}'`);
105
162
  }
106
163
  }
107
164
 
165
+ // =================================================================
166
+ // initialize the VideoJS player (on page ready)
167
+ // -----------------------------------------------------------------
108
168
  var dependencies_met_page_ready = setInterval (function (options) {
109
169
  var pageState = $('#content').css("display");
110
170
  var pageVisible = (pageState == 'block') ? true : false;
111
171
  var j1CoreFinished = (j1.getState() === 'finished') ? true : false;
112
172
 
113
173
  if (j1CoreFinished && pageVisible) {
174
+ var vjs_player = document.getElementById("#{video_id}");
175
+ var appliedOnce = false;
114
176
 
115
- if ('#{caption_enabled}' === 'true' && '#{poster_image}' !== 'auto') {
177
+ // add|skip captions (on poster image)
178
+ if ('#{caption_enabled}' === 'true') {
116
179
  addCaptionAfterImage('#{poster_image}');
117
180
  }
118
181
 
119
- // scroll to player top position
182
+ // scroll page to the players top position
120
183
  // -------------------------------------------------------------
121
- var vjs_player = document.getElementById("#{video_id}");
122
-
123
184
  vjs_player.addEventListener('click', function(event) {
124
- event.preventDefault();
125
- event.stopPropagation();
126
-
127
- var scrollOffset = (window.innerWidth >= 720) ? -130 : -110;
128
-
129
- // scroll player to top position
130
185
  const targetDiv = document.getElementById("#{video_id}");
131
186
  const targetDivPosition = targetDiv.offsetTop;
187
+ var scrollOffset = (window.innerWidth >= 720) ? -130 : -110;
188
+
189
+ // scroll player to top position
132
190
  window.scrollTo(0, targetDivPosition + scrollOffset);
133
191
  }); // END EventListener 'click'
134
192
 
135
193
  clearInterval(dependencies_met_page_ready);
136
194
  }
137
195
  }, 10);
138
- });
196
+
197
+ // customize the yt player (already) created
198
+ // -----------------------------------------------------------------
199
+ var dependencies_met_vjs_player_exist = setInterval (function (options) {
200
+ var vjsPlayerExist = document.getElementById("#{video_id}") ? true : false;
201
+ var vjsPlayerCustomButtons = ("#{custom_buttons}" === 'true') ? true : false;
202
+
203
+ if (vjsPlayerExist && vjsPlayerCustomButtons) {
204
+
205
+ // apply player customization on 'player ready'
206
+ // -------------------------------------------------------------
207
+ videojs("#{video_id}").ready(function() {
208
+ const vjsPlayer = this;
209
+
210
+ // add custom progressControlSilder
211
+ // -----------------------------------------------------------
212
+
213
+ // create customControlContainer for progressControlSilder|time (display) elements
214
+ const customProgressContainer = vjsPlayer.controlBar.addChild('Component', {
215
+ el: videojs.dom.createEl('div', {
216
+ className: 'vjs-theme-uno custom-progressbar-container'
217
+ })
218
+ });
219
+
220
+ // move progressControlSlider into customControlContainer
221
+ const progressControlSlider = vjsPlayer.controlBar.progressControl;
222
+ if (progressControlSlider) {
223
+ customProgressContainer.el().appendChild(progressControlSlider.el());
224
+ }
225
+
226
+ // move currentTimeDisplay BEFORE the progressControlSilder
227
+ const currentTimeDisplay = vjsPlayer.controlBar.currentTimeDisplay;
228
+ if (currentTimeDisplay) {
229
+ customProgressContainer.el().insertBefore(currentTimeDisplay.el(), progressControlSlider.el());
230
+ }
231
+
232
+ // move the durationDisplay AFTER the progressControlSilder
233
+ const durationDisplay = vjsPlayer.controlBar.durationDisplay;
234
+ if (durationDisplay) {
235
+ customProgressContainer.el().appendChild(durationDisplay.el());
236
+ }
237
+
238
+ // add|skip playbackRates
239
+ // -----------------------------------------------------------
240
+ if (videojsConfig.playbackRates.enabled) {
241
+ vjsPlayer.playbackRates(vjsPlaybackRates);
242
+ }
243
+
244
+ // add|skip hotKeys plugin
245
+ //
246
+ if (piHotKeys.enabled) {
247
+ vjsPlayer.hotKeys({
248
+ volumeStep: piHotKeys.volumeStep,
249
+ seekStep: piHotKeys.seekStep,
250
+ enableMute: piHotKeys.enableMute,
251
+ enableFullscreen: piHotKeys.enableFullscreen,
252
+ enableNumbers: piHotKeys.enableNumbers,
253
+ enableVolumeScroll: piHotKeys.enableVolumeScroll,
254
+ enableHoverScroll: piHotKeys.enableHoverScroll,
255
+ alwaysCaptureHotkeys: piHotKeys.alwaysCaptureHotkeys,
256
+ captureDocumentHotkeys: piHotKeys.captureDocumentHotkeys,
257
+ documentHotkeysFocusElementFilter: e => e.tagName.toLowerCase() === "body",
258
+
259
+ // Mimic VLC seek behavior (default to: 15)
260
+ seekStep: function(e) {
261
+ if (e.ctrlKey && e.altKey) {
262
+ return 5*60;
263
+ } else if (e.ctrlKey) {
264
+ return 60;
265
+ } else if (e.altKey) {
266
+ return 10;
267
+ } else {
268
+ return 15;
269
+ }
270
+ },
271
+
272
+ // Enhance existing simple hotkey by complex hotkeys
273
+ fullscreenKey: function(e) {
274
+ // fullscreen with the F key or Ctrl+Enter
275
+ return ((e.which === 70) || (e.ctrlKey && e.which === 13));
276
+ },
277
+
278
+ }); // END VideoJS hotKeys plugin
279
+ }
280
+
281
+ // add|skip skipButtons plugin
282
+ // -----------------------------------------------------------
283
+ if (piSkipButtons.enabled) {
284
+ var backwardIndex = piSkipButtons.backward;
285
+ var forwardIndex = piSkipButtons.forwardIndex;
286
+
287
+ // property 'surroundPlayButton' takes precendence
288
+ //
289
+ if (piSkipButtons.surroundPlayButton) {
290
+ var backwardIndex = 0;
291
+ var forwardIndex = 1;
292
+ }
293
+
294
+ vjsPlayer.skipButtons({
295
+ backwardIndex: backwardIndex,
296
+ forwardIndex: forwardIndex,
297
+ backward: piSkipButtons.backward,
298
+ forward: piSkipButtons.forward,
299
+ });
300
+ }
301
+
302
+ // set start position of current video (on play)
303
+ // -----------------------------------------------------------
304
+ var appliedOnce = false;
305
+ vjsPlayer.on("play", function() {
306
+ var startFromSecond = new Date('1970-01-01T' + "#{attributes['start']}" + 'Z').getTime() / 1000;
307
+ if (!appliedOnce) {
308
+ vjsPlayer.currentTime(startFromSecond);
309
+ appliedOnce = true;
310
+ }
311
+ });
312
+
313
+ }); // END yt player ready (set custom controls)
314
+
315
+ clearInterval(dependencies_met_vjs_player_exist);
316
+ } // END if 'vjsPlayerExist'
317
+
318
+ }, 10); // END 'dependencies_met_vjs_player_exist'
319
+
320
+ }); // END 'document ready'
139
321
  </script>
140
322
  )
141
323
 
@@ -394,6 +394,6 @@ end
394
394
 
395
395
  module Jekyll
396
396
  module J1LunrSearch
397
- VERSION = '2024.3.24'
397
+ VERSION = '2024.3.25'
398
398
  end
399
399
  end
@@ -31,7 +31,7 @@ fab_menu_id: open_toc
31
31
  comments: false
32
32
  regenerate: false
33
33
 
34
- resources: [ animate ]
34
+ resources: [ ]
35
35
  resource_options:
36
36
  - attic:
37
37
  opacity: 0.5
@@ -10,7 +10,7 @@ categories: [ Jekyll ]
10
10
  tags: [ Theme ]
11
11
 
12
12
  image:
13
- path: /assets/image/module/attic/1920x1280/j1-starter-mockup-1.jpg
13
+ path: /assets/image/module/attic/1920x1280/j1-mockup.jpg
14
14
  width: 1920
15
15
  height: 1280
16
16
  alt: J1 Template Mockup
@@ -28,7 +28,7 @@ resource_options:
28
28
  - attic:
29
29
  padding_top: 630
30
30
  slides:
31
- - url: /assets/image/module/attic/1920x1280/j1-starter-mockup-1.jpg
31
+ - url: /assets/image/module/attic/1920x1280/j1-mockup.jpg
32
32
  alt: J1 Template Mockup
33
33
  ---
34
34
 
@@ -10,7 +10,7 @@ categories: [ Web ]
10
10
  tags: [ Protocols ]
11
11
 
12
12
  image:
13
- path: /assets/image/module/attic/1920x1280/j1-starter-mockup-1.jpg
13
+ path: /assets/image/module/attic/1920x1280/j1-mockup.jpg
14
14
  width: 1920
15
15
  height: 1280
16
16
  alt: J1 Template Mockup
@@ -27,7 +27,7 @@ resource_options:
27
27
  - attic:
28
28
  padding_top: 630
29
29
  slides:
30
- - url: /assets/image/module/attic/1920x1280/j1-starter-mockup-1.jpg
30
+ - url: /assets/image/module/attic/1920x1280/j1-mockup.jpg
31
31
  alt: J1 Template Mockup
32
32
  ---
33
33
 
@@ -20,4 +20,4 @@ require 'j1_app'
20
20
 
21
21
  # run the app
22
22
  # ------------------------------------------------------------------------------
23
- run J1App.site
23
+ run J1App.site
@@ -13,4 +13,4 @@
13
13
 
14
14
  # Enforce Unix newlines, all text files
15
15
  # ------------------------------------------------------------------------------
16
- * text=auto eol=lf
16
+ * text=auto eol=lf
@@ -3,8 +3,8 @@ layout: home
3
3
  compress: true
4
4
 
5
5
  title: J1 Template
6
- title_extention: Bootstrap V5 Theme for Jekyll
7
- tagline: Bootstrap V5 Theme for Jekyll
6
+ title_extention: Free Bootstrap V5 Theme for Jekyll
7
+ tagline: Free Bootstrap V5 Theme
8
8
 
9
9
  date: 2023-01-01 00:00:00
10
10
  #last_modified: 2025-05-24 00:00:00
@@ -27,9 +27,9 @@ robots:
27
27
  follow: true
28
28
 
29
29
  image:
30
- path: //assets.trainingindustry.com/content/uploads/2019/06/Company-Culture_Zappos-6.5.19-928x522.jpg
30
+ path: /assets/image/module/attic/1920x1280/j1-launch.jpg
31
31
  width: 1920
32
- height: 1200
32
+ height: 1280
33
33
 
34
34
  tts: true
35
35
  toc: false
@@ -92,13 +92,12 @@ accordion:
92
92
  noting that just about any HTML can go within the <code>.accordion-body</code>, though the
93
93
  transition does limit overflow.
94
94
 
95
- resources: [ animate, scroller ]
95
+ resources: [ scroller ]
96
96
  resource_options:
97
97
  - attic:
98
98
  slides:
99
- # - url: /assets/image/module/attic/1920x1280/ideas-start-here-1920x1280.jpg
100
- - url: //assets.trainingindustry.com/content/uploads/2019/06/Company-Culture_Zappos-6.5.19-928x522.jpg
101
- alt: ideas-start-here-1920x1280.jpg
99
+ - url: /assets/image/module/attic/1920x1280/j1-launch.jpg
100
+ alt: Making is like wanting - but even better
102
101
  # badge:
103
102
  # type: unsplash
104
103
  # author: Kristopher Roller
@@ -118,3 +117,4 @@ resource_options:
118
117
  (inheritance) is correct.
119
118
 
120
119
  </pre>
120
+
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": true,
3
3
  "name": "j1",
4
- "version": "2024.3.24",
4
+ "version": "2024.3.25",
5
5
  "description": "J1 Template",
6
6
  "homepage": "https://your.site",
7
7
  "author": {