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.
- checksums.yaml +4 -4
- data/assets/data/apps/amplitudehtml +1147 -0
- data/assets/data/apps/gallery.html +342 -0
- data/assets/data/{masonry.html → apps/masonry.html} +22 -9
- data/assets/data/apps/swiper.html +901 -0
- data/assets/data/masonry_app.html +521 -0
- data/assets/theme/j1/modules/lightGallery/css/theme/uno/uno.css +21 -13
- data/assets/theme/j1/modules/lightGallery/css/theme/uno/uno.min.css +1 -2
- data/assets/theme/j1/modules/lightGallery/js/lightgallery.js +14 -13
- data/assets/theme/j1/modules/lightGallery/js/lightgallery.min.js +1 -1
- data/assets/theme/j1/modules/lightGallery/js/plugins/lg-video.js +265 -226
- data/assets/theme/j1/modules/lightGallery/js/plugins/lg-video.min.js +1 -1
- data/assets/theme/j1/modules/videojs/css/themes/uno.css +12 -2
- data/assets/theme/j1/modules/videojs/css/videojs.css +2 -3
- data/assets/theme/j1/modules/videojs/css/videojs.min.css +1 -1
- data/assets/theme/j1/modules/videojs/plugins/controls/zoom/css/zoom.css +55 -55
- data/assets/theme/j1/modules/videojs/plugins/controls/zoom/css/zoom.min.css +2 -1
- data/assets/theme/j1/modules/videojs/plugins/controls/zoom/js/zoom.js +590 -382
- data/assets/theme/j1/modules/videojs/plugins/controls/zoom/js/zoom.min.js +1 -1
- data/assets/theme/j1/modules/videojs/plugins/j1_core/template.min.js +31 -0
- data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/{simple.html → index.html} +11 -10
- data/assets/theme/j1/modules/videojs/plugins/players/dm/js/dailymotion.0.js +647 -0
- data/assets/theme/j1/modules/videojs/plugins/players/dm/js/dailymotion.1.js +653 -0
- data/assets/theme/j1/modules/videojs/plugins/players/vm/!examples/{player → iframe_api}/index.html +3 -3
- data/assets/theme/j1/modules/videojs/plugins/players/vm/!examples/{index.html → videojs_api/index.html} +7 -3
- data/assets/theme/j1/modules/videojs/plugins/players/vm/api/js/v2.21.0/vimeo.js +3562 -0
- data/assets/theme/j1/modules/videojs/plugins/players/vm/api/js/v2.21.0/vimeo.min.js +36 -0
- data/assets/theme/j1/modules/videojs/plugins/players/vm/api/js/vimeo.js +451 -1849
- data/assets/theme/j1/modules/videojs/plugins/players/vm/api/js/vimeo.min.js +2 -14
- data/assets/theme/j1/modules/videojs/plugins/players/vm/js/LICENSE +21 -0
- data/assets/theme/j1/modules/videojs/plugins/players/vm/js/README.md +54 -0
- data/assets/theme/j1/modules/videojs/plugins/players/vm/js/old/vimeo.js +666 -0
- data/assets/theme/j1/modules/videojs/plugins/players/vm/js/old/vimeo.min.js +28 -0
- data/assets/theme/j1/modules/videojs/plugins/players/vm/js/vimeo.js +2318 -548
- data/assets/theme/j1/modules/videojs/plugins/players/vm/js/vimeo.min.js +12 -18
- data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/{simple.html → index.html} +15 -6
- data/assets/theme/j1/modules/videojs/plugins/players/yt/js/youtube.js +12 -5
- data/assets/theme/j1/modules/videojs/plugins/players/yt/js/youtube.min.js +1 -1
- data/lib/j1/version.rb +1 -1
- data/lib/starter_web/Gemfile +1 -1
- data/lib/starter_web/README.md +5 -5
- data/lib/starter_web/_config.yml +2 -2
- data/lib/starter_web/_data/blocks/banner.yml +1 -1
- data/lib/starter_web/_data/j1_config.yml +1 -1
- data/lib/starter_web/_data/layouts/home.yml +1 -1
- data/lib/starter_web/_data/modules/authentication.yml +1 -2
- data/lib/starter_web/_data/modules/defaults/masonry.yml +1 -1
- data/lib/starter_web/_data/modules/gallery.yml +35 -24
- data/lib/starter_web/_data/modules/log4javascript.yml +1 -1
- data/lib/starter_web/_data/modules/masonry.yml +30 -14
- data/lib/starter_web/_data/modules/navigator.yml +1 -1
- data/lib/starter_web/_data/modules/navigator_menu.yml +12 -8
- data/lib/starter_web/_data/templates/feed.xml +1 -1
- data/lib/starter_web/_plugins/asciidoctor/dailymotion-block.rb +206 -24
- data/lib/starter_web/_plugins/index/lunr.rb +1 -1
- data/lib/starter_web/assets/image/module/attic/1920x1280/admin-dashboard-bootstrap.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/alexander-redl.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/alexander-shatov.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/alexey-ruban.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/andrea-badino.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/bootstrap-modal.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/bp-miller.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/brad-neathery.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/brigitta-schneiter.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/build-with-gemini.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/clem-onojeghuo.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/eleni-afiontzi.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/fly-d.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/guillaume-bolduc.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/ideas-start-here-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/isaac-davis.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/j1-launch.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/j1-mockup.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/john-schnobrich-2.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/josep-martins.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/josh-liu.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/kelly-sikkemal.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/kira-auf-der-heide.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/kristopher-roller.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/markus-spiske.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/martin-sanchez.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/material_symbols.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/matthaeus.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/melanie-deziel.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/nasa.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/quino-al-2.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/stories-ink-tattoo-care.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/towfiqu-barbhuiya.jpg +0 -0
- data/lib/starter_web/collections/posts/public/featured/_posts/0000-00-00-welcome-to-j1.adoc.erb +1 -1
- data/lib/starter_web/collections/posts/public/featured/_posts/2022-02-01-about-j1.adoc +2 -2
- data/lib/starter_web/collections/posts/public/featured/_posts/2023-10-18-url-types.adoc +2 -2
- data/lib/starter_web/config.ru +1 -1
- data/lib/starter_web/dot.gitattributes +1 -1
- data/lib/starter_web/index.html +8 -8
- data/lib/starter_web/package.json +1 -1
- data/lib/starter_web/pages/public/about/features.adoc +5 -5
- data/lib/starter_web/pages/public/about/reporting_issues.adoc +5 -5
- data/lib/starter_web/pages/public/about/site.adoc +14 -10
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/000_intro.adoc +1 -1
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/100_converter.adoc +1 -1
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/200_themes.adoc +1 -1
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +1 -1
- data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +1 -1
- data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +1 -1
- data/lib/starter_web/pages/public/blog/navigator/archive/allview.html +1 -1
- data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +1 -1
- data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +1 -1
- data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +1 -1
- data/lib/starter_web/pages/public/blog/navigator/index.html +1 -1
- data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_biography.adoc +1 -1
- data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_fantasy.adoc +1 -1
- data/lib/starter_web/pages/public/learn/bookshelf/article_previewer/viewer_romance.adoc +1 -1
- data/lib/starter_web/pages/public/learn/bookshelf/jekyll_collections.adoc +1 -1
- data/lib/starter_web/pages/public/learn/bookshelf/viewer_all_books.adoc +1 -1
- data/lib/starter_web/pages/public/learn/where_to_go.adoc +1 -1
- data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +3 -3
- data/lib/starter_web/pages/public/legal/en/200_impress.adoc +3 -3
- data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +3 -3
- data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +3 -3
- data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +1 -4
- data/lib/starter_web/pages/public/plans/plans.adoc +1 -1
- data/lib/starter_web/pages/public/tools/previewer/preview_bootstrap_theme.adoc +1 -1
- data/lib/starter_web/pages/public/tools/tester/videojs_macro_tester.adoc +116 -43
- data/lib/starter_web/pages/public/tour/_includes/documents/419_advanced_modals_demo.asciidoc +1 -1
- data/lib/starter_web/pages/public/tour/video_data.adoc +28 -22
- metadata +25 -49
- data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/dailymotion-controls.html +0 -18
- data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/dailymotion-javascript.html +0 -28
- data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/dailymotion-playlist.html +0 -19
- data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/global-parameters.html +0 -30
- data/assets/theme/j1/modules/videojs/plugins/players/dm/!examples/switch.html +0 -39
- data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/global-parameters.html +0 -34
- data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/switch.html +0 -39
- data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/youtube-controls.html +0 -20
- data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/youtube-javascript.html +0 -29
- data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/youtube-list.html +0 -21
- data/assets/theme/j1/modules/videojs/plugins/players/yt/!examples/youtube-playlist.html +0 -21
- data/lib/starter_web/assets/image/module/attic/1920x1280/j1-content-mockup-2.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/j1-content-mockup-3.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/1920x1280/j1-starter-mockup-1.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/admin-dashboard-bootstrap-1280x600.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/alice-donovan-rouse-2.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/building-blocks-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/christina-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/franck-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/giammarco-boscaro-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/jessica-ruscello-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/joanna-kosinska-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/leon-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/lianhao-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/library-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/markus-krisetya-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/markus-spiske-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/markus-spiske4-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/matthaeus-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/matthew-dockery-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/no-time-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/rirri-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/shubham-dhage-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/shutterstock_sponsor-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/sigmund-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/szabo-viktor-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/themes-1920x1280-bw.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/tldr-1920x800.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/vladislav-klapin-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/image/module/attic/yellow-cactus-1920x1280.jpg +0 -0
- /data/assets/theme/j1/modules/videojs/plugins/players/vm/{LICENSE → js/old/LICENSE} +0 -0
- /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: //
|
716
|
+
source: //youtube.com/IUN664s7N-c
|
716
717
|
pinterest_prefix: Pin video
|
717
718
|
tweet_prefix: Try video
|
718
719
|
description: >
|
719
|
-
<
|
720
|
-
<
|
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
|
-
</
|
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
|
-
<
|
743
|
-
<
|
744
|
-
|
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
|
-
<
|
762
|
-
<
|
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
|
-
<
|
782
|
-
<
|
783
|
-
|
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
|
@@ -814,18 +814,22 @@
|
|
814
814
|
#
|
815
815
|
- item: About
|
816
816
|
sublevel:
|
817
|
-
|
817
|
+
|
818
|
+
- title: This Site
|
818
819
|
icon: home-variant-outline
|
819
820
|
href: /pages/public/about/starter/
|
820
|
-
|
821
|
-
|
822
|
-
|
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
|
-
|
827
|
-
|
828
|
-
|
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.
|
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
|
-
'
|
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
|
53
|
-
|
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="
|
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
|
-
#{
|
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(`
|
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
|
-
|
177
|
+
// add|skip captions (on poster image)
|
178
|
+
if ('#{caption_enabled}' === 'true') {
|
116
179
|
addCaptionAfterImage('#{poster_image}');
|
117
180
|
}
|
118
181
|
|
119
|
-
// scroll to
|
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
|
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -10,7 +10,7 @@ categories: [ Jekyll ]
|
|
10
10
|
tags: [ Theme ]
|
11
11
|
|
12
12
|
image:
|
13
|
-
path: /assets/image/module/attic/1920x1280/j1-
|
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-
|
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-
|
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-
|
30
|
+
- url: /assets/image/module/attic/1920x1280/j1-mockup.jpg
|
31
31
|
alt: J1 Template Mockup
|
32
32
|
---
|
33
33
|
|
data/lib/starter_web/config.ru
CHANGED
data/lib/starter_web/index.html
CHANGED
@@ -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
|
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:
|
30
|
+
path: /assets/image/module/attic/1920x1280/j1-launch.jpg
|
31
31
|
width: 1920
|
32
|
-
height:
|
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: [
|
95
|
+
resources: [ scroller ]
|
96
96
|
resource_options:
|
97
97
|
- attic:
|
98
98
|
slides:
|
99
|
-
|
100
|
-
|
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
|
+
|