From f55374b6990d1ddb0cfa07c3c8849bb605f537a9 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 Signed-off-by: David Nind --- 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 b130f24e4c..c0feaf6c39 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 0000000000..f67694a705 --- /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 f35f91037e..9547a99868 100644 --- a/installer/data/mysql/mandatory/sysprefs.sql +++ b/installer/data/mysql/mandatory/sysprefs.sql @@ -322,6 +322,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 1f088136f4..41ffcf0500 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 ad7b1828d3..5e3bf3397d 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 8792eb3912..7cb9d22ade 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