From 498bc079b9dddfb443ca8eca08855ffb7af37b38 Mon Sep 17 00:00:00 2001 From: wainuiwitikapark Date: Tue, 14 Jan 2025 05:30:51 +0000 Subject: [PATCH] Bug 19339: Enhance streaming cataloging to include Vimeo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Test plan: 1. Apply patch 2. Run updatedatabase in ktd 3. Set system preferenceHTML5MediaEnabled 4. Enable system preferenceHTML5MediaVimeo 5. Go to a record and edit it 6. Go to 856u - add a vimeo url - save your changes 7. On the biblio detail page - there should be a "Play media" tab above the holdings table 8. The vimeo video should be embedded under the "Play media" tab and be playable Sponsored-by: Māoriland Film Festival --- C4/HTML5Media.pm | 26 +++++++++++++++++-- .../bug_19339-HTML5MediaVimeo_syspref.pl | 15 +++++++++++ installer/data/mysql/mandatory/sysprefs.sql | 1 + .../admin/preferences/enhanced_content.pref | 6 +++++ .../prog/en/modules/catalogue/detail.tt | 2 ++ .../bootstrap/en/modules/opac-detail.tt | 2 ++ 6 files changed, 50 insertions(+), 2 deletions(-) create mode 100755 installer/data/mysql/atomicupdate/bug_19339-HTML5MediaVimeo_syspref.pl diff --git a/C4/HTML5Media.pm b/C4/HTML5Media.pm index b130f24e4cc..c0feaf6c39d 100644 --- a/C4/HTML5Media.pm +++ b/C4/HTML5Media.pm @@ -49,10 +49,12 @@ sub gethtml5media { my $HTML5MediaWidth; my @HTML5MediaExtensions = split( /\|/, C4::Context->preference("HTML5MediaExtensions") ); my $HTML5MediaYouTube = C4::Context->preference("HTML5MediaYouTube"); + my $HTML5MediaVimeo = C4::Context->preference("HTML5MediaVimeo"); my $marcflavour = C4::Context->preference("marcflavour"); foreach my $HTML5Media_field (@HTML5Media_fields) { my $is_youtube = 0; + my $is_vimeo = 0; my %HTML5Media; # protocol @@ -112,6 +114,22 @@ sub gethtml5media { next; # do not embed youtube videos } } + if (grep /vimeo/, $HTML5Media_field->subfield('u') ) { + if ($HTML5MediaVimeo == 1) { + my $url = $HTML5Media_field->subfield('u'); + next unless $url =~ m{^.*(vimeo.com/)([^#\&\?]*).*}; + + my $video_id = $2; +#$HTML5Media{srcblock} = sprintf 'https://player.vimeo.com/video/%s?badge=0&autopause=0&player_id=0&app_id=58479', $video_id; + $HTML5Media{srcblock} = sprintf 'https://player.vimeo.com/video/%s', $video_id; + + $HTML5Media{is_vimeo} = 1; + $is_vimeo = 1; + } + else { + next; # do not embed vimeo videos + } + } } elsif ( $HTML5Media_field->subfield('a') && $HTML5Media_field->subfield('d') && $HTML5Media_field->subfield('f') ) @@ -152,7 +170,7 @@ sub gethtml5media { else { $HTML5Media{extension} = ( $HTML5Media{srcblock} =~ m/([^.]+)$/ )[0]; } - if ( ( !grep /\Q$HTML5Media{extension}\E/, @HTML5MediaExtensions ) && ( $is_youtube != 1 ) ) { + if ( ( !grep /\Q$HTML5Media{extension}\E/, @HTML5MediaExtensions ) && ( $is_youtube != 1) && ( $is_vimeo != 1 ) ) { next; # not a specified media file } @@ -161,7 +179,11 @@ sub gethtml5media { $HTML5Media{mime} = 'video/webm'; $HTML5Media{type} = 'video'; } - + # vimeo + if ($is_vimeo == 1) { + $HTML5Media{mime} = 'video/webm'; + $HTML5Media{type} = 'video'; + } # mime if ( $HTML5Media_field->subfield('c') ) { $HTML5Media{codecs} = $HTML5Media_field->subfield('c'); diff --git a/installer/data/mysql/atomicupdate/bug_19339-HTML5MediaVimeo_syspref.pl b/installer/data/mysql/atomicupdate/bug_19339-HTML5MediaVimeo_syspref.pl new file mode 100755 index 00000000000..f67694a7050 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_19339-HTML5MediaVimeo_syspref.pl @@ -0,0 +1,15 @@ +use Modern::Perl; +use Koha::Installer::Output qw(say_warning say_success say_info); + +return { + bug_number => "19339", + description => "Enhance streaming cataloging to include Vimeo", + up => sub { + my ($args) = @_; + my ( $dbh, $out ) = @$args{qw(dbh out)}; + + $dbh->do(q{INSERT IGNORE INTO systempreferences (variable,value,explanation,options,type) VALUES ('HTML5MediaVimeo',0,'Embed|Don\'t embed','Vimeo links as videos','YesNo')}); + + say_success( $out, "Added new system preference 'HTML5MediaVimeo'" ); + }, +}; diff --git a/installer/data/mysql/mandatory/sysprefs.sql b/installer/data/mysql/mandatory/sysprefs.sql index 2bf9d0b6486..2b01fa7de89 100644 --- a/installer/data/mysql/mandatory/sysprefs.sql +++ b/installer/data/mysql/mandatory/sysprefs.sql @@ -319,6 +319,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('HTML5MediaEnabled','not','not|opac|staff|both','Show a tab with a HTML5 media player for files catalogued in field 856','Choice'), ('HTML5MediaExtensions','webm|ogg|ogv|oga|vtt','','Media file extensions','free'), ('HTML5MediaYouTube',0,'Embed|Don\'t embed','YouTube links as videos','YesNo'), +('HTML5MediaVimeo',0,'Embed|Don\'t embed','Vimeo links as videos','YesNo'), ('IdRef','0','','Disable/enable the IdRef webservice from the OPAC detail page.','YesNo'), ('ILLCheckAvailability', 0, '', 'If ON, during the ILL request process third party sources will be checked for current availability', 'YesNo'), ('ILLDefaultStaffEmail', '', NULL, 'Fallback email address for staff ILL notices to be sent to in the absence of a branch address', 'Free'), diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/enhanced_content.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/enhanced_content.pref index 1f088136f49..41ffcf05000 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/enhanced_content.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/enhanced_content.pref @@ -339,6 +339,12 @@ Enhanced content: 1: "Embed" 0: "Don't embed" - YouTube links as videos. + - + - pref: HTML5MediaVimeo + choices: + 1: "Embed" + 0: "Don't embed" + - Vimeo links as videos. OverDrive: - - pref: OPACOverDrive diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt index 801f7dad1ea..b731d33032e 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt @@ -866,6 +866,8 @@

[% IF HTML5MediaSet.is_youtube %] + [% ELSIF HTML5MediaSet.is_vimeo %] + [% ELSE %] <[% HTML5MediaParent | html %] controls preload=none> diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt index f87c37056a8..1717d299f7a 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt @@ -975,6 +975,8 @@

[% IF HTML5MediaSet.is_youtube %] + [% ELSIF HTML5MediaSet.is_vimeo %] + [% ELSE %] [% SET ctrl_preload = ' controls preload=none' #translatability %] -- 2.39.5