View | Details | Raw Unified | Return to bug 20783
Collapse All | Expand All

(-)a/C4/HTML5Media.pm (-17 / +13 lines)
Lines 50-56 sub gethtml5media { Link Here
50
    my @HTML5MediaExtensions = split( /\|/, C4::Context->preference("HTML5MediaExtensions") );
50
    my @HTML5MediaExtensions = split( /\|/, C4::Context->preference("HTML5MediaExtensions") );
51
    my $HTML5MediaYouTube    = C4::Context->preference("HTML5MediaYouTube");
51
    my $HTML5MediaYouTube    = C4::Context->preference("HTML5MediaYouTube");
52
    my $marcflavour          = C4::Context->preference("marcflavour");
52
    my $marcflavour          = C4::Context->preference("marcflavour");
53
    my $isyoutube            = 0;
53
    my $is_embed            = 0;
54
    foreach my $HTML5Media_field (@HTML5Media_fields) {
54
    foreach my $HTML5Media_field (@HTML5Media_fields) {
55
        my %HTML5Media;
55
        my %HTML5Media;
56
        # protocol
56
        # protocol
Lines 99-117 sub gethtml5media { Link Here
99
        if ( $HTML5Media_field->subfield('u') ) {
99
        if ( $HTML5Media_field->subfield('u') ) {
100
            $HTML5Media{srcblock} = $HTML5Media_field->subfield('u');
100
            $HTML5Media{srcblock} = $HTML5Media_field->subfield('u');
101
            if (grep /youtu\.?be/, $HTML5Media_field->subfield('u') ) {
101
            if (grep /youtu\.?be/, $HTML5Media_field->subfield('u') ) {
102
                $HTML5Media{srcblock} = "";
102
                if ($HTML5MediaYouTube == 1) {
103
                if ($HTML5MediaYouTube == 1) {
103
                    require WWW::YouTube::Download;
104
                    use HTML::Video::Embed;
104
                    import  WWW::YouTube::Download qw(playback_url);
105
                    my $embedder = HTML::Video::Embed->new({
105
                    my $youtube           = WWW::YouTube::Download->new;
106
                        class   => 'html5-embed-video'
107
                    });
108
106
                    eval {
109
                    eval {
107
                        $HTML5Media{srcblock} = $youtube->playback_url(
110
                        my $html_embed_code = $embedder->url_to_embed( $HTML5Media_field->subfield('u') );
108
                            $HTML5Media_field->subfield('u'), {
111
                        $HTML5Media{embed} = $html_embed_code;
109
                                'fmt' => '43' #webm is the only format compatible to all modern browsers. maybe check for available qualities
110
                            }
111
                        );
112
                    };
112
                    };
113
                    if ($@) { warn $@; }
113
                    if ($@) { warn $@; }
114
                    else  { $isyoutube = 1;}
114
                    else  { $is_embed = 1;}
115
                }
115
                }
116
               else {
116
               else {
117
                   next; # do not embed youtube videos
117
                   next; # do not embed youtube videos
Lines 145-157 sub gethtml5media { Link Here
145
        else {
145
        else {
146
            $HTML5Media{extension} = ($HTML5Media{srcblock} =~ m/([^.]+)$/)[0];
146
            $HTML5Media{extension} = ($HTML5Media{srcblock} =~ m/([^.]+)$/)[0];
147
        }
147
        }
148
        if ( ( !grep /\Q$HTML5Media{extension}\E/, @HTML5MediaExtensions ) && ( $isyoutube != 1) ) {
148
        if ( ( !grep /\Q$HTML5Media{extension}\E/, @HTML5MediaExtensions ) && ( $is_embed != 1) ) {
149
            next; # not a specified media file
149
            next; # not a specified media file
150
        }
150
        }
151
        # youtube
152
        if ($isyoutube == 1) {
153
                $HTML5Media{mime} = 'video/webm';
154
        }
155
        # mime
151
        # mime
156
        if ( $HTML5Media_field->subfield('c') ) {
152
        if ( $HTML5Media_field->subfield('c') ) {
157
            $HTML5Media{codecs} = $HTML5Media_field->subfield('c');
153
            $HTML5Media{codecs} = $HTML5Media_field->subfield('c');
Lines 222-228 sub gethtml5media { Link Here
222
            $HTML5Media{type} = 'track';
218
            $HTML5Media{type} = 'track';
223
        }
219
        }
224
        # push
220
        # push
225
        if ( $HTML5Media{srcblock} && $HTML5Media{type} ) {
221
        if ( ($HTML5Media{srcblock} && $HTML5Media{type}) || $HTML5Media{embed} ) {
226
            push (@HTML5Media_sets, \%HTML5Media);
222
            push (@HTML5Media_sets, \%HTML5Media);
227
        }
223
        }
228
    }
224
    }
Lines 252-258 sub gethtml5media { Link Here
252
    }
248
    }
253
249
254
    return (
250
    return (
255
        HTML5MediaEnabled  => ( (scalar(@HTML5Media_sets) > 0) && ($HTML5MediaParent) ),
251
        HTML5MediaEnabled  => ( (scalar(@HTML5Media_sets) > 0 && $HTML5MediaParent) || $is_embed ),
256
        HTML5MediaSets     => \@HTML5Media_sets,
252
        HTML5MediaSets     => \@HTML5Media_sets,
257
        HTML5MediaParent   => $HTML5MediaParent,
253
        HTML5MediaParent   => $HTML5MediaParent,
258
        HTML5MediaWidth    => $HTML5MediaWidth,
254
        HTML5MediaWidth    => $HTML5MediaWidth,
(-)a/C4/Installer/PerlDependencies.pm (-3 / +3 lines)
Lines 802-811 our $PERL_DEPS = { Link Here
802
        'required' => '1',
802
        'required' => '1',
803
        'min_ver'  => '1.10',
803
        'min_ver'  => '1.10',
804
    },
804
    },
805
    'WWW::YouTube::Download' => {
805
    'HTML::Video::Embed' => {
806
        'usage'    => 'HTML5Media streaming from YouTube',
806
        'usage'    => 'Convert a url into a html embed string',
807
        'required' => '0',
807
        'required' => '0',
808
        'min_ver'  => '0.56',
808
        'min_ver'  => '0.016000',
809
    },
809
    },
810
    'Net::SFTP::Foreign' => {
810
    'Net::SFTP::Foreign' => {
811
        'usage'    => 'Edifact',
811
        'usage'    => 'Edifact',
(-)a/koha-tmpl/intranet-tmpl/prog/css/staff-global.css (+5 lines)
Lines 2479-2484 video { Link Here
2479
    width: 480px;
2479
    width: 480px;
2480
}
2480
}
2481
2481
2482
.html5-embed-video {
2483
	width: 480px;
2484
	height: 300px;
2485
}
2486
2482
/* Bootstrap overrides */
2487
/* Bootstrap overrides */
2483
button,
2488
button,
2484
.btn {
2489
.btn {
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt (-4 / +8 lines)
Lines 795-804 Link Here
795
<div id="html5media">
795
<div id="html5media">
796
          [% FOREACH HTML5MediaSet IN HTML5MediaSets %]
796
          [% FOREACH HTML5MediaSet IN HTML5MediaSets %]
797
            <p>
797
            <p>
798
              <[% HTML5MediaParent %] controls preload=none>
798
                [% IF (HTML5MediaSet.embed) %]
799
                <[% HTML5MediaSet.child  %] src="[% HTML5MediaSet.srcblock %]"[% HTML5MediaSet.typeblock %] />
799
                    [% HTML5MediaSet.embed %]
800
                [[% HTML5MediaParent %] tag not supported by your browser.]
800
                [% ELSE %]
801
              </[% HTML5MediaParent %]>
801
                    <[% HTML5MediaParent %] controls preload=none>
802
                    <[% HTML5MediaSet.child  %] src="[% HTML5MediaSet.srcblock %]"[% HTML5MediaSet.typeblock %] />
803
                    [[% HTML5MediaParent %] tag not supported by your browser.]
804
                    </[% HTML5MediaParent %]>
805
                [% END %]
802
            </p>
806
            </p>
803
          [% END %]
807
          [% END %]
804
</div>
808
</div>
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt (-5 / +9 lines)
Lines 1031-1041 Link Here
1031
                            <div id="html5media">
1031
                            <div id="html5media">
1032
                              [% FOREACH HTML5MediaSet IN HTML5MediaSets %]
1032
                              [% FOREACH HTML5MediaSet IN HTML5MediaSets %]
1033
                                <p>
1033
                                <p>
1034
                                  [% SET ctrl_preload = ' controls preload=none' #translatability %]
1034
                                    [% IF (HTML5MediaSet.embed) %]
1035
                                  <[% HTML5MediaParent _ ctrl_preload %] >
1035
                                        [% HTML5MediaSet.embed %]
1036
                                    <[% HTML5MediaSet.child _ ' src="' _  HTML5MediaSet.srcblock _'"' _ HTML5MediaSet.typeblock %] />
1036
                                    [% ELSE %]
1037
                                    <span>[[% HTML5MediaParent %] tag not supported by your browser.]</span>
1037
                                        [% SET ctrl_preload = ' controls preload=none' #translatability %]
1038
                                  </[% HTML5MediaParent %]>
1038
                                        <[% HTML5MediaParent _ ctrl_preload %] >
1039
                                        <[% HTML5MediaSet.child _ ' src="' _  HTML5MediaSet.srcblock _'"' _ HTML5MediaSet.typeblock %] />
1040
                                        <span>[[% HTML5MediaParent %] tag not supported by your browser.]</span>
1041
                                        </[% HTML5MediaParent %]>
1042
                                    [% END %]
1039
                                </p>
1043
                                </p>
1040
                              [% END %]
1044
                              [% END %]
1041
                            </div>
1045
                            </div>
(-)a/koha-tmpl/opac-tmpl/bootstrap/less/opac.less (-1 / +7 lines)
Lines 2636-2641 a.reviewlink:visited { Link Here
2636
    }
2636
    }
2637
}
2637
}
2638
2638
2639
video {
2640
    width: 480px;
2641
}
2639
2642
2643
.html5-embed-video {
2644
    width: 480px;
2645
    height: 300px;
2646
}
2640
2647
2641
@import "responsive.less";
2648
@import "responsive.less";
2642
- 

Return to bug 20783