Version Description
2019/02/26 =
New Feature - Rewind Button - seeks 10 seconds back in the video, enable in Settings -> FV Player -> Sitewide FV Player Defaults
Live stream - removing from Post Interface Options and showing it for HLS streams automatically
Audio - checkbox for HLS streams to make them audio-only
Bugfix - video duration check forgetting to remove fv_flowlayer_tmp_* temporary files
Bugfix - video position saving too many requests when leaving the web page
Bugfix - video start/end time editing for FV Player Pro
Bugfix - too many database checks in wp-admin
Download this release
Release Info
Developer | FolioVision |
Plugin | FV Flowplayer Video Player |
Version | 7.3.12.727 |
Comparing to | |
See all releases |
Code changes from version 7.3.9.727 to 7.3.12.727
- controller/frontend.php +10 -0
- controller/settings.php +1 -0
- css/flowplayer.css +1 -1
- flowplayer.php +2 -2
- flowplayer/fv-flowplayer.min.js +22 -5
- js/shortcode-editor.js +43 -1
- models/checker.php +6 -2
- models/db-player-meta.php +1 -1
- models/db-player.php +1 -1
- models/db-video-meta.php +1 -1
- models/db-video.php +1 -1
- models/db.php +3 -0
- models/flowplayer-frontend.php +19 -2
- models/flowplayer.php +9 -1
- models/lightbox.php +0 -2
- models/media-browser-s3.php +56 -58
- readme.txt +11 -1
- view/admin.php +2 -1
- view/wizard.php +6 -7
controller/frontend.php
CHANGED
@@ -455,6 +455,16 @@ function flowplayer_display_scripts() {
|
|
455 |
include_once(dirname( __FILE__ ) . '/../css/fvp-icon-sprite.svg');
|
456 |
}
|
457 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
458 |
if( flowplayer::is_special_editor() ) {
|
459 |
return;
|
460 |
}
|
455 |
include_once(dirname( __FILE__ ) . '/../css/fvp-icon-sprite.svg');
|
456 |
}
|
457 |
|
458 |
+
if( $fv_fp->_get_option('ui_rewind_button') ) { // todo: only include if it's going to be used!
|
459 |
+
?>
|
460 |
+
<svg style="position: absolute; width: 0; height: 0; overflow: hidden;" class="fvp-icon" xmlns="http://www.w3.org/2000/svg">
|
461 |
+
<g id="fvp-rewind">
|
462 |
+
<path d="M22.7 10.9c0 1.7-0.4 3.3-1.1 4.8 -0.7 1.5-1.8 2.8-3.2 3.8 -0.4 0.3-1.3-0.9-0.9-1.2 1.2-0.9 2.1-2 2.7-3.3 0.7-1.3 1-2.7 1-4.1 0-2.6-0.9-4.7-2.7-6.5 -1.8-1.8-4-2.7-6.5-2.7 -2.5 0-4.7 0.9-6.5 2.7 -1.8 1.8-2.7 4-2.7 6.5 0 2.4 0.8 4.5 2.5 6.3 1.7 1.8 3.7 2.7 6.1 2.9l-1.2-2c-0.2-0.3 0.9-1 1.1-0.7l2.3 3.7c0.2 0.3 0 0.6-0.2 0.7L9.5 23.8c-0.3 0.2-0.9-0.9-0.5-1.2l2.1-1.1c-2.7-0.2-5-1.4-6.9-3.4 -1.9-2-2.8-4.5-2.8-7.2 0-3 1.1-5.5 3.1-7.6C6.5 1.2 9 0.2 12 0.2c3 0 5.5 1.1 7.6 3.1C21.7 5.4 22.7 7.9 22.7 10.9z" fill="#fff"/><path d="M8.1 15.1c-0.1 0-0.1 0-0.1-0.1V8C8 7.7 7.8 7.9 7.7 7.9L6.8 8.3C6.8 8.4 6.7 8.3 6.7 8.2L6.3 7.3C6.2 7.2 6.3 7.1 6.4 7.1l2.7-1.2c0.1 0 0.4 0 0.4 0.3v8.8c0 0.1 0 0.1-0.1 0.1H8.1z" fill="#fff"/><path d="M17.7 10.6c0 2.9-1.3 4.7-3.5 4.7 -2.2 0-3.5-1.8-3.5-4.7s1.3-4.7 3.5-4.7C16.4 5.9 17.7 7.7 17.7 10.6zM12.3 10.6c0 2.1 0.7 3.4 2 3.4 1.3 0 2-1.2 2-3.4 0-2.1-0.7-3.4-2-3.4C13 7.2 12.3 8.5 12.3 10.6z" fill="#fff"/>
|
463 |
+
</g>
|
464 |
+
</svg>
|
465 |
+
<?php
|
466 |
+
}
|
467 |
+
|
468 |
if( flowplayer::is_special_editor() ) {
|
469 |
return;
|
470 |
}
|
controller/settings.php
CHANGED
@@ -352,6 +352,7 @@ function flowplayer_admin_footer() {
|
|
352 |
if( !fv_player_is_admin_screen() ) return;
|
353 |
|
354 |
flowplayer_prepare_scripts();
|
|
|
355 |
}
|
356 |
|
357 |
|
352 |
if( !fv_player_is_admin_screen() ) return;
|
353 |
|
354 |
flowplayer_prepare_scripts();
|
355 |
+
flowplayer_display_scripts();
|
356 |
}
|
357 |
|
358 |
|
css/flowplayer.css
CHANGED
@@ -1818,6 +1818,6 @@ body.fv_flowplayer_tabs_hide .fv_flowplayer_tabs_content > div.fv_flowplayer_tab
|
|
1818 |
border-right: 1px solid #fff;
|
1819 |
}
|
1820 |
|
1821 |
-
.flowplayer.is-tiny .fv-fp-prevbtn, .flowplayer.is-tiny .fv-fp-nextbtn {
|
1822 |
display: none;
|
1823 |
}
|
1818 |
border-right: 1px solid #fff;
|
1819 |
}
|
1820 |
|
1821 |
+
.flowplayer.is-tiny .fv-fp-prevbtn, .flowplayer.is-tiny .fv-fp-nextbtn, .flowplayer.is-tiny .fv-fp-rewind {
|
1822 |
display: none;
|
1823 |
}
|
flowplayer.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: FV Player
|
4 |
Plugin URI: http://foliovision.com/wordpress/plugins/fv-wordpress-flowplayer
|
5 |
Description: Formerly FV WordPress Flowplayer. Supports MP4, HLS, MPEG-DASH, WebM and OGV. Advanced features such as overlay ads or popups. Uses Flowplayer 7.2.7.
|
6 |
-
Version: 7.3.
|
7 |
Author URI: http://foliovision.com/
|
8 |
License: GPL-3.0
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.txt
|
@@ -27,7 +27,7 @@ License URI: http://www.gnu.org/licenses/gpl-3.0.txt
|
|
27 |
*/
|
28 |
|
29 |
global $fv_wp_flowplayer_ver;
|
30 |
-
$fv_wp_flowplayer_ver = '7.3.
|
31 |
$fv_wp_flowplayer_core_ver = '7.2.7.1';
|
32 |
|
33 |
include_once( dirname( __FILE__ ) . '/includes/extra-functions.php' );
|
3 |
Plugin Name: FV Player
|
4 |
Plugin URI: http://foliovision.com/wordpress/plugins/fv-wordpress-flowplayer
|
5 |
Description: Formerly FV WordPress Flowplayer. Supports MP4, HLS, MPEG-DASH, WebM and OGV. Advanced features such as overlay ads or popups. Uses Flowplayer 7.2.7.
|
6 |
+
Version: 7.3.12.727
|
7 |
Author URI: http://foliovision.com/
|
8 |
License: GPL-3.0
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.txt
|
27 |
*/
|
28 |
|
29 |
global $fv_wp_flowplayer_ver;
|
30 |
+
$fv_wp_flowplayer_ver = '7.3.12.727';
|
31 |
$fv_wp_flowplayer_core_ver = '7.2.7.1';
|
32 |
|
33 |
include_once( dirname( __FILE__ ) . '/includes/extra-functions.php' );
|
flowplayer/fv-flowplayer.min.js
CHANGED
@@ -2204,7 +2204,7 @@ flowplayer( function(api,root) {
|
|
2204 |
flowplayer( function(api,root) {
|
2205 |
root = jQuery(root);
|
2206 |
|
2207 |
-
if( !root.data('button-no-picture') && !root.data('button-repeat') ) return;
|
2208 |
|
2209 |
api.bind('ready', function(e,api) {
|
2210 |
if( !api.video.type.match(/^audio/) && root.data('button-no-picture') && root.find('.fv-fp-no-picture').length == 0 ) {
|
@@ -2323,6 +2323,19 @@ flowplayer( function(api,root) {
|
|
2323 |
|
2324 |
}
|
2325 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2326 |
}).bind('unload', function() {
|
2327 |
root.find('.fv-fp-no-picture').remove();
|
2328 |
root.find('.fv-fp-playlist').remove();
|
@@ -2570,7 +2583,9 @@ flowplayer( function(api,root) {
|
|
2570 |
},
|
2571 |
|
2572 |
// used to seek into the desired last stored position when he video has started
|
2573 |
-
seekIntoPosition = function (e, api) {
|
|
|
|
|
2574 |
var
|
2575 |
originalVideoApiPath = getOriginalSource(api.video),
|
2576 |
position = originalVideoApiPath.position;
|
@@ -2704,9 +2719,11 @@ flowplayer( function(api,root) {
|
|
2704 |
|
2705 |
// TODO: find out what event can be used to force saving of playlist video positions on video change
|
2706 |
//api.bind('finish', forceSavePosition);
|
2707 |
-
|
2708 |
-
|
2709 |
-
|
|
|
|
|
2710 |
});
|
2711 |
|
2712 |
// check whether local storage is enabled
|
2204 |
flowplayer( function(api,root) {
|
2205 |
root = jQuery(root);
|
2206 |
|
2207 |
+
if( !root.data('button-no-picture') && !root.data('button-repeat') && !root.data('button-rewind') ) return;
|
2208 |
|
2209 |
api.bind('ready', function(e,api) {
|
2210 |
if( !api.video.type.match(/^audio/) && root.data('button-no-picture') && root.find('.fv-fp-no-picture').length == 0 ) {
|
2323 |
|
2324 |
}
|
2325 |
}
|
2326 |
+
|
2327 |
+
if( root.data('button-rewind') && root.find('.fv-fp-rewind').length == 0 ) {
|
2328 |
+
var button_rewind = jQuery('<span class="fv-fp-rewind"><svg viewBox="0 0 24 24" width="24px" height="24px" class="fvp-icon fvp-rewind"><use xlink:href="#fvp-rewind"></use></svg></span>');
|
2329 |
+
|
2330 |
+
button_rewind.insertBefore( root.find('.fp-controls .fp-elapsed') ).click( function(e) {
|
2331 |
+
e.preventDefault();
|
2332 |
+
e.stopPropagation();
|
2333 |
+
|
2334 |
+
api.seek(api.video.time-10);
|
2335 |
+
});
|
2336 |
+
|
2337 |
+
button_rewind.toggle(!api.video.live);
|
2338 |
+
}
|
2339 |
}).bind('unload', function() {
|
2340 |
root.find('.fv-fp-no-picture').remove();
|
2341 |
root.find('.fv-fp-playlist').remove();
|
2583 |
},
|
2584 |
|
2585 |
// used to seek into the desired last stored position when he video has started
|
2586 |
+
seekIntoPosition = function (e, api) {
|
2587 |
+
if( api.video && api.video.live ) return;
|
2588 |
+
|
2589 |
var
|
2590 |
originalVideoApiPath = getOriginalSource(api.video),
|
2591 |
position = originalVideoApiPath.position;
|
2719 |
|
2720 |
// TODO: find out what event can be used to force saving of playlist video positions on video change
|
2721 |
//api.bind('finish', forceSavePosition);
|
2722 |
+
api.one('progress', function() {
|
2723 |
+
jQuery(window).on('beforeunload', function () {
|
2724 |
+
flowplayer.conf.closingPage = true;
|
2725 |
+
sendVideoPositions();
|
2726 |
+
});
|
2727 |
});
|
2728 |
|
2729 |
// check whether local storage is enabled
|
js/shortcode-editor.js
CHANGED
@@ -708,6 +708,13 @@ function fv_flowplayer_playlist_add( sInput, sCaption, sSubtitles, sSplashText )
|
|
708 |
new_item.find('[name=fv_wp_flowplayer_field_splash]').val(objVid.splash);
|
709 |
new_item.find('[name=fv_wp_flowplayer_field_splash_text]').val(objVid.splash_text);
|
710 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
711 |
if (typeof sSubtitles === 'object' && sSubtitles.length && sSubtitles[0].lang) {
|
712 |
// DB-based subtitles value
|
713 |
var firstDone = false;
|
@@ -1657,7 +1664,10 @@ function fv_wp_flowplayer_edit() {
|
|
1657 |
|
1658 |
if(sPlaylist){
|
1659 |
fv_flowplayer_playlist_show();
|
|
|
|
|
1660 |
}
|
|
|
1661 |
//initial preview
|
1662 |
fv_player_refresh_tabs();
|
1663 |
|
@@ -2104,7 +2114,14 @@ function fv_wp_flowplayer_check_for_player_meta_field(fieldName) {
|
|
2104 |
|
2105 |
|
2106 |
function fv_wp_flowplayer_check_for_video_meta_field(fieldName) {
|
2107 |
-
return [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2108 |
}
|
2109 |
|
2110 |
|
@@ -3505,3 +3522,28 @@ jQuery(document).on('keydown', '#fv_wp_flowplayer_field_splash, #fv_wp_flowplaye
|
|
3505 |
console.log(this.id+' has been updated manually!');
|
3506 |
$element.data('fv_player_user_updated', 1);
|
3507 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
708 |
new_item.find('[name=fv_wp_flowplayer_field_splash]').val(objVid.splash);
|
709 |
new_item.find('[name=fv_wp_flowplayer_field_splash_text]').val(objVid.splash_text);
|
710 |
|
711 |
+
new_item.find('[name=fv_wp_flowplayer_field_start]').val(objVid.start);
|
712 |
+
new_item.find('[name=fv_wp_flowplayer_field_end]').val(objVid.end);
|
713 |
+
|
714 |
+
jQuery(objVid.meta).each( function(k,v) {
|
715 |
+
if( v.meta_key == 'audio' ) new_item.find('[name=fv_wp_flowplayer_field_audio]').prop('checked',v.meta_value).attr('data-id',v.id);
|
716 |
+
});
|
717 |
+
|
718 |
if (typeof sSubtitles === 'object' && sSubtitles.length && sSubtitles[0].lang) {
|
719 |
// DB-based subtitles value
|
720 |
var firstDone = false;
|
1664 |
|
1665 |
if(sPlaylist){
|
1666 |
fv_flowplayer_playlist_show();
|
1667 |
+
} else {
|
1668 |
+
fv_flowplayer_editor_item_show(0);
|
1669 |
}
|
1670 |
+
|
1671 |
//initial preview
|
1672 |
fv_player_refresh_tabs();
|
1673 |
|
2114 |
|
2115 |
|
2116 |
function fv_wp_flowplayer_check_for_video_meta_field(fieldName) {
|
2117 |
+
return [
|
2118 |
+
'fv_wp_flowplayer_field_duration',
|
2119 |
+
'fv_wp_flowplayer_field_last_video_meta_check',
|
2120 |
+
'fv_wp_flowplayer_field_live',
|
2121 |
+
'fv_wp_flowplayer_field_auto_splash',
|
2122 |
+
'fv_wp_flowplayer_field_auto_caption',
|
2123 |
+
'fv_wp_flowplayer_field_audio'
|
2124 |
+
].indexOf(fieldName) > -1;
|
2125 |
}
|
2126 |
|
2127 |
|
3522 |
console.log(this.id+' has been updated manually!');
|
3523 |
$element.data('fv_player_user_updated', 1);
|
3524 |
});
|
3525 |
+
|
3526 |
+
jQuery(document).on('keyup', '[name=fv_wp_flowplayer_field_src], [name=fv_wp_flowplayer_field_rtmp_path]', fv_player_editor_show_stream_fields );
|
3527 |
+
jQuery(document).on('fv_flowplayer_shortcode_item_switch fv_flowplayer_shortcode_new', fv_player_editor_show_stream_fields );
|
3528 |
+
|
3529 |
+
function fv_player_editor_show_stream_fields(e,index) {
|
3530 |
+
// on keyup
|
3531 |
+
var src = jQuery(this).val(),
|
3532 |
+
item = jQuery(this).parents('table');
|
3533 |
+
|
3534 |
+
// on fv_flowplayer_shortcode_item_switch
|
3535 |
+
if( typeof(index) != "undefined" ) {
|
3536 |
+
item = jQuery('.fv-player-playlist-item[data-index='+index+']');
|
3537 |
+
src = item.find('[name=fv_wp_flowplayer_field_src]').val();
|
3538 |
+
}
|
3539 |
+
|
3540 |
+
// on fv_flowplayer_shortcode_new
|
3541 |
+
if( item.length == 0 ) item = jQuery('.fv-player-playlist-item[data-index=0]');
|
3542 |
+
|
3543 |
+
var rtmp = item.find('[name=fv_wp_flowplayer_field_rtmp_path]').val();
|
3544 |
+
var show = rtmp || src.match(/\.m3u8/) || src.match(/rtmp:/) || src.match(/\.mpd/);
|
3545 |
+
|
3546 |
+
item.find('[name=fv_wp_flowplayer_field_live]').closest('tr').toggle(!!show);
|
3547 |
+
item.find('[name=fv_wp_flowplayer_field_audio]').closest('tr').toggle(!!show);
|
3548 |
+
|
3549 |
+
}
|
models/checker.php
CHANGED
@@ -174,8 +174,12 @@ class FV_Player_Checker {
|
|
174 |
|
175 |
if( $bValidFile ) {
|
176 |
$ThisFileInfo = $getID3->analyze( $localtempfilename );
|
177 |
-
}
|
178 |
-
}
|
|
|
|
|
|
|
|
|
179 |
}
|
180 |
|
181 |
|
174 |
|
175 |
if( $bValidFile ) {
|
176 |
$ThisFileInfo = $getID3->analyze( $localtempfilename );
|
177 |
+
}
|
178 |
+
}
|
179 |
+
|
180 |
+
foreach( glob( trailingslashit($upload_dir['basedir']).'fv_flowlayer_tmp_*' ) AS $file ) {
|
181 |
+
@unlink($file);
|
182 |
+
}
|
183 |
}
|
184 |
|
185 |
|
models/db-player-meta.php
CHANGED
@@ -94,7 +94,7 @@ class FV_Player_Db_Player_Meta {
|
|
94 |
|
95 |
self::init_db_name();
|
96 |
|
97 |
-
if(
|
98 |
$sql = "
|
99 |
CREATE TABLE " . self::$db_table_name . " (
|
100 |
id bigint(20) unsigned NOT NULL auto_increment,
|
94 |
|
95 |
self::init_db_name();
|
96 |
|
97 |
+
if( !$fv_fp->_get_option('player_meta_model_db_checked') || $fv_fp->_get_option('player_meta_model_db_checked') != $fv_wp_flowplayer_ver ) {
|
98 |
$sql = "
|
99 |
CREATE TABLE " . self::$db_table_name . " (
|
100 |
id bigint(20) unsigned NOT NULL auto_increment,
|
models/db-player.php
CHANGED
@@ -379,7 +379,7 @@ class FV_Player_Db_Player {
|
|
379 |
|
380 |
self::init_db_name();
|
381 |
|
382 |
-
if(
|
383 |
$sql = "
|
384 |
CREATE TABLE " . self::$db_table_name . " (
|
385 |
id bigint(20) unsigned NOT NULL auto_increment,
|
379 |
|
380 |
self::init_db_name();
|
381 |
|
382 |
+
if( !$fv_fp->_get_option('player_model_db_checked') || $fv_fp->_get_option('player_model_db_checked') != $fv_wp_flowplayer_ver ) {
|
383 |
$sql = "
|
384 |
CREATE TABLE " . self::$db_table_name . " (
|
385 |
id bigint(20) unsigned NOT NULL auto_increment,
|
models/db-video-meta.php
CHANGED
@@ -87,7 +87,7 @@ class FV_Player_Db_Video_Meta {
|
|
87 |
|
88 |
self::init_db_name();
|
89 |
|
90 |
-
if(
|
91 |
$sql = "
|
92 |
CREATE TABLE " . self::$db_table_name . " (
|
93 |
id bigint(20) unsigned NOT NULL auto_increment,
|
87 |
|
88 |
self::init_db_name();
|
89 |
|
90 |
+
if( !$fv_fp->_get_option('video_meta_model_db_checked') || $fv_fp->_get_option('video_meta_model_db_checked') != $fv_wp_flowplayer_ver ) {
|
91 |
$sql = "
|
92 |
CREATE TABLE " . self::$db_table_name . " (
|
93 |
id bigint(20) unsigned NOT NULL auto_increment,
|
models/db-video.php
CHANGED
@@ -194,7 +194,7 @@ class FV_Player_Db_Video {
|
|
194 |
|
195 |
self::init_db_name();
|
196 |
|
197 |
-
if(
|
198 |
$sql = "
|
199 |
CREATE TABLE " . self::$db_table_name . " (
|
200 |
id bigint(20) unsigned NOT NULL auto_increment,
|
194 |
|
195 |
self::init_db_name();
|
196 |
|
197 |
+
if( !$fv_fp->_get_option('video_model_db_checked') || $fv_fp->_get_option('video_model_db_checked') != $fv_wp_flowplayer_ver ) {
|
198 |
$sql = "
|
199 |
CREATE TABLE " . self::$db_table_name . " (
|
200 |
id bigint(20) unsigned NOT NULL auto_increment,
|
models/db.php
CHANGED
@@ -920,6 +920,9 @@ class FV_Player_Db {
|
|
920 |
}
|
921 |
|
922 |
echo $id;
|
|
|
|
|
|
|
923 |
} else {
|
924 |
echo -1;
|
925 |
}
|
920 |
}
|
921 |
|
922 |
echo $id;
|
923 |
+
|
924 |
+
do_action('fv_player_db_save', $id);
|
925 |
+
|
926 |
} else {
|
927 |
echo -1;
|
928 |
}
|
models/flowplayer-frontend.php
CHANGED
@@ -84,6 +84,16 @@ class flowplayer_frontend extends flowplayer
|
|
84 |
$this->aCurArgs['src'] = $media;
|
85 |
}
|
86 |
$this->aCurArgs = apply_filters( 'fv_flowplayer_args_pre', $args );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
$media = $this->aCurArgs['src'];
|
88 |
|
89 |
if( !$media && empty($this->aCurArgs['rtmp_path']) ) {
|
@@ -372,7 +382,11 @@ class flowplayer_frontend extends flowplayer
|
|
372 |
$splashend_contents = '<div id="wpfp_'.$this->hash.'_custom_background" class="wpfp_custom_background" style="position: absolute; background: url(\''.$splash_img.'\') no-repeat center center; background-size: contain; width: 100%; height: 100%; z-index: 1;"></div>';
|
373 |
}
|
374 |
|
375 |
-
$bIsAudio = ( empty($splash_img) || $splash_img == $this->_get_option('splash') ) && preg_match( '~\.(mp3|wav|ogg)([?#].*?)?$~', $media );
|
|
|
|
|
|
|
|
|
376 |
|
377 |
$attributes['class'] = 'flowplayer no-brand is-splash';
|
378 |
|
@@ -442,6 +456,9 @@ class flowplayer_frontend extends flowplayer
|
|
442 |
if( $this->_get_option('ui_repeat_button') ) {
|
443 |
$attributes['data-button-repeat'] = true;
|
444 |
}
|
|
|
|
|
|
|
445 |
|
446 |
// Align
|
447 |
$attributes['class'] .= $this->get_align();
|
@@ -887,7 +904,7 @@ class flowplayer_frontend extends flowplayer
|
|
887 |
|
888 |
function get_speed_attribute( $attributes ) {
|
889 |
$bShow = false;
|
890 |
-
if( $this->_get_option('ui_speed') || isset($this->aCurArgs['speed']) && $this->aCurArgs['speed'] == 'buttons' ) {
|
891 |
$bShow = true;
|
892 |
}
|
893 |
|
84 |
$this->aCurArgs['src'] = $media;
|
85 |
}
|
86 |
$this->aCurArgs = apply_filters( 'fv_flowplayer_args_pre', $args );
|
87 |
+
|
88 |
+
// force horizontal playlist style for audio as that the only one styled properly
|
89 |
+
if( $player = $this->current_player() ) {
|
90 |
+
if( $videos = $player->getVideos() ) {
|
91 |
+
if( !empty($videos[0]) && $videos[0]->getMetaValue('audio',true) ) {
|
92 |
+
$this->aCurArgs['liststyle'] = 'horizontal';
|
93 |
+
}
|
94 |
+
}
|
95 |
+
}
|
96 |
+
|
97 |
$media = $this->aCurArgs['src'];
|
98 |
|
99 |
if( !$media && empty($this->aCurArgs['rtmp_path']) ) {
|
382 |
$splashend_contents = '<div id="wpfp_'.$this->hash.'_custom_background" class="wpfp_custom_background" style="position: absolute; background: url(\''.$splash_img.'\') no-repeat center center; background-size: contain; width: 100%; height: 100%; z-index: 1;"></div>';
|
383 |
}
|
384 |
|
385 |
+
$bIsAudio = ( empty($splash_img) || $splash_img == $this->_get_option('splash') ) && preg_match( '~\.(mp3|wav|ogg)([?#].*?)?$~', $media );
|
386 |
+
|
387 |
+
if( !$bIsAudio && $video = $this->current_video() ) {
|
388 |
+
$bIsAudio = $video->getMetaValue('audio',true);
|
389 |
+
}
|
390 |
|
391 |
$attributes['class'] = 'flowplayer no-brand is-splash';
|
392 |
|
456 |
if( $this->_get_option('ui_repeat_button') ) {
|
457 |
$attributes['data-button-repeat'] = true;
|
458 |
}
|
459 |
+
if( $this->_get_option('ui_rewind_button') ) {
|
460 |
+
$attributes['data-button-rewind'] = true;
|
461 |
+
}
|
462 |
|
463 |
// Align
|
464 |
$attributes['class'] .= $this->get_align();
|
904 |
|
905 |
function get_speed_attribute( $attributes ) {
|
906 |
$bShow = false;
|
907 |
+
if( $this->_get_option('ui_speed') || isset($this->aCurArgs['speed']) && ( $this->aCurArgs['speed'] == 'buttons' || $this->aCurArgs['speed'] == 'yes' ) ) {
|
908 |
$bShow = true;
|
909 |
}
|
910 |
|
models/flowplayer.php
CHANGED
@@ -1428,6 +1428,14 @@ class flowplayer extends FV_Wordpress_Flowplayer_Plugin_Private {
|
|
1428 |
public static function get_duration_post( $post_id = false ) {
|
1429 |
global $post, $fv_fp;
|
1430 |
$post_id = ( $post_id ) ? $post_id : $post->ID;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1431 |
|
1432 |
$content = false;
|
1433 |
$objPost = get_post($post_id);
|
@@ -1891,7 +1899,7 @@ class flowplayer extends FV_Wordpress_Flowplayer_Plugin_Private {
|
|
1891 |
|
1892 |
function rewrite_check( $aRules ) {
|
1893 |
$aRewriteRules = get_option('rewrite_rules');
|
1894 |
-
if( empty($aRewriteRules) ) {
|
1895 |
return;
|
1896 |
}
|
1897 |
|
1428 |
public static function get_duration_post( $post_id = false ) {
|
1429 |
global $post, $fv_fp;
|
1430 |
$post_id = ( $post_id ) ? $post_id : $post->ID;
|
1431 |
+
|
1432 |
+
global $wpdb;
|
1433 |
+
$tDuration = intval( $wpdb->get_var( "SELECT vm.meta_value FROM {$wpdb->prefix}fv_player_playermeta AS pm JOIN {$wpdb->prefix}fv_player_players AS p ON p.id = pm.id_player JOIN {$wpdb->prefix}fv_player_videos AS v ON FIND_IN_SET(v.id, p.videos) > 0 JOIN {$wpdb->prefix}fv_player_videometa AS vm ON v.id = vm.id_video WHERE pm.meta_key = 'post_id' AND pm.meta_value = ".intval($post_id)." AND vm.meta_key = 'duration' ORDER BY CAST(vm.meta_value AS UNSIGNED) DESC LIMIT 1" ) );
|
1434 |
+
if( $tDuration > 3600 ) {
|
1435 |
+
return gmdate( "H:i:s", $tDuration );
|
1436 |
+
} else if( $tDuration > 0 ) {
|
1437 |
+
return gmdate( "i:s", $tDuration );
|
1438 |
+
}
|
1439 |
|
1440 |
$content = false;
|
1441 |
$objPost = get_post($post_id);
|
1899 |
|
1900 |
function rewrite_check( $aRules ) {
|
1901 |
$aRewriteRules = get_option('rewrite_rules');
|
1902 |
+
if( empty($aRewriteRules) || !is_array($aRewriteRules) || count($aRewriteRules) == 0 ) {
|
1903 |
return;
|
1904 |
}
|
1905 |
|
models/lightbox.php
CHANGED
@@ -494,8 +494,6 @@ class FV_Player_lightbox {
|
|
494 |
</tr>
|
495 |
<script>
|
496 |
jQuery(document).ready(function(){
|
497 |
-
jQuery('[name="pro[interface][lightbox]"]').parents('td').replaceWith('<td><p><?php _e('Setting <a href="#interface[live]">moved</a>', 'fv-wordpress-flowplayer'); ?></p></td>');
|
498 |
-
jQuery('[name="pro[lightbox_images]"]').parents('td').replaceWith('<td><p><?php _e('Setting <a href="#subtitleOn">moved</a>', 'fv-wordpress-flowplayer'); ?></p></td>');
|
499 |
var lightbox_images = jQuery('#lightbox_images');
|
500 |
if(lightbox_images.attr('checked')){
|
501 |
jQuery('#lightbox-wp-galleries').show();
|
494 |
</tr>
|
495 |
<script>
|
496 |
jQuery(document).ready(function(){
|
|
|
|
|
497 |
var lightbox_images = jQuery('#lightbox_images');
|
498 |
if(lightbox_images.attr('checked')){
|
499 |
jQuery('#lightbox-wp-galleries').show();
|
models/media-browser-s3.php
CHANGED
@@ -30,8 +30,6 @@ class FV_Player_Media_Browser_S3 extends FV_Player_Media_Browser {
|
|
30 |
$this->fv_wp_flowplayer_include_aws_sdk();
|
31 |
global $fv_fp, $s3Client;
|
32 |
|
33 |
-
$error = false;
|
34 |
-
|
35 |
$regions = $fv_fp->_get_option('amazon_region');
|
36 |
$secrets = $fv_fp->_get_option('amazon_secret');
|
37 |
$keys = $fv_fp->_get_option('amazon_key');
|
@@ -142,7 +140,7 @@ class FV_Player_Media_Browser_S3 extends FV_Player_Media_Browser {
|
|
142 |
}
|
143 |
|
144 |
} catch ( Aws\CloudFront\Exception\CloudFrontException $e ) {
|
145 |
-
$
|
146 |
}
|
147 |
|
148 |
// instantiate the S3 client with AWS credentials
|
@@ -164,69 +162,73 @@ class FV_Player_Media_Browser_S3 extends FV_Player_Media_Browser {
|
|
164 |
$args['Prefix'] = $request_path;
|
165 |
}
|
166 |
|
167 |
-
$
|
168 |
-
$objects = array_merge( !empty($res['CommonPrefixes']) ? $res['CommonPrefixes'] : array(), $res->get('Contents') );
|
169 |
-
|
170 |
-
if( isset($_REQUEST['debug']) ) {
|
171 |
-
var_dump($args,$objects);
|
172 |
-
die();
|
173 |
-
}
|
174 |
|
175 |
$sum_up = array();
|
176 |
-
|
177 |
-
|
178 |
-
$objectarray = array();
|
179 |
-
}
|
180 |
-
|
181 |
-
$item = array();
|
182 |
|
183 |
-
$
|
|
|
|
|
184 |
|
185 |
-
|
186 |
-
if( empty($sum_up['ts']) ) $sum_up['ts'] = 0;
|
187 |
-
$sum_up['ts']++;
|
188 |
-
continue;
|
189 |
-
}
|
190 |
|
191 |
-
$
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
|
196 |
-
$item
|
197 |
-
} else {
|
198 |
-
$item['name'] = $path;
|
199 |
-
}
|
200 |
-
|
201 |
-
if( !empty($object['Size']) ) {
|
202 |
-
$item['type'] = 'file';
|
203 |
-
$item['size'] = $object['Size'];
|
204 |
|
205 |
-
$
|
206 |
-
$link = str_replace( '%20', '+', $link );
|
207 |
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
// replace S3 URLs with bucket name as a subfolder
|
214 |
-
$link = preg_replace('/https?:\/\/[^\/]+\/' . $bucket . '\/(.*)/i', rtrim($domains[$array_id], '/').'/$1', $link);
|
215 |
}
|
216 |
|
217 |
-
$item['
|
218 |
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
228 |
}
|
229 |
-
|
230 |
}
|
231 |
|
232 |
foreach( $sum_up AS $ext => $count ) {
|
@@ -276,10 +278,6 @@ class FV_Player_Media_Browser_S3 extends FV_Player_Media_Browser {
|
|
276 |
)
|
277 |
)
|
278 |
);
|
279 |
-
|
280 |
-
if( $error ) {
|
281 |
-
$json_final['error'] = $error;
|
282 |
-
}
|
283 |
|
284 |
if (isset($err) && $err) {
|
285 |
$json_final['err'] = $err;
|
30 |
$this->fv_wp_flowplayer_include_aws_sdk();
|
31 |
global $fv_fp, $s3Client;
|
32 |
|
|
|
|
|
33 |
$regions = $fv_fp->_get_option('amazon_region');
|
34 |
$secrets = $fv_fp->_get_option('amazon_secret');
|
35 |
$keys = $fv_fp->_get_option('amazon_key');
|
140 |
}
|
141 |
|
142 |
} catch ( Aws\CloudFront\Exception\CloudFrontException $e ) {
|
143 |
+
$err = 'It appears that the policy of AWS IAM user identified by '.$key.' doesn\'t permit List and Read operations for the CloudFront service. Please add these access levels if you are using CloudFront for your S3 buckets in order to obtain CloudFront links for your videos.';
|
144 |
}
|
145 |
|
146 |
// instantiate the S3 client with AWS credentials
|
162 |
$args['Prefix'] = $request_path;
|
163 |
}
|
164 |
|
165 |
+
$paged = $s3Client->getPaginator('ListObjects',$args);
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
|
167 |
$sum_up = array();
|
168 |
+
|
169 |
+
foreach( $paged AS $res ) {
|
|
|
|
|
|
|
|
|
170 |
|
171 |
+
$folders = !empty($res['CommonPrefixes']) ? $res['CommonPrefixes'] : array();
|
172 |
+
$files = $res->get('Contents');
|
173 |
+
if( !$files ) $files = array();
|
174 |
|
175 |
+
$objects = array_merge( $folders, $files );
|
|
|
|
|
|
|
|
|
176 |
|
177 |
+
foreach ( $objects as $object ) {
|
178 |
+
if ( ! isset( $objectarray ) ) {
|
179 |
+
$objectarray = array();
|
180 |
+
}
|
181 |
|
182 |
+
$item = array();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
183 |
|
184 |
+
$path = $object['Prefix'] ? $object['Prefix'] : $object['Key'];
|
|
|
185 |
|
186 |
+
if( !empty($object['Key']) && preg_match( '~\.ts$~', $object['Key'] ) ) {
|
187 |
+
if( empty($sum_up['ts']) ) $sum_up['ts'] = 0;
|
188 |
+
$sum_up['ts']++;
|
189 |
+
continue;
|
|
|
|
|
|
|
190 |
}
|
191 |
|
192 |
+
$item['path'] = 'Home/' . $path;
|
193 |
|
194 |
+
if( $request_path ) {
|
195 |
+
if( $request_path == $path ) continue; // sometimes the current folder is present in the response, weird
|
196 |
+
|
197 |
+
$item['name'] = str_replace( $request_path, '', $path );
|
198 |
+
} else {
|
199 |
+
$item['name'] = $path;
|
200 |
+
}
|
201 |
+
|
202 |
+
if( !empty($object['Size']) ) {
|
203 |
+
$item['type'] = 'file';
|
204 |
+
$item['size'] = $object['Size'];
|
205 |
+
|
206 |
+
$link = (string) $s3Client->getObjectUrl( $bucket, $path );
|
207 |
+
$link = str_replace( '%20', '+', $link );
|
208 |
+
|
209 |
+
// replace link with CloudFront URL, if we have one
|
210 |
+
if( !empty($domains[$array_id]) ) {
|
211 |
+
// replace S3 URLs with buckets in the S3 subdomain
|
212 |
+
$link = preg_replace('/https?:\/\/' . $bucket . '\.s3[^.]*\.amazonaws\.com\/(.*)/i', rtrim($domains[$array_id], '/').'/$1', $link);
|
213 |
+
|
214 |
+
// replace S3 URLs with bucket name as a subfolder
|
215 |
+
$link = preg_replace('/https?:\/\/[^\/]+\/' . $bucket . '\/(.*)/i', rtrim($domains[$array_id], '/').'/$1', $link);
|
216 |
+
}
|
217 |
+
|
218 |
+
$item['link'] = $link;
|
219 |
+
|
220 |
+
} else {
|
221 |
+
$item['type'] = 'folder';
|
222 |
+
$item['items'] = array();
|
223 |
+
}
|
224 |
+
|
225 |
+
$output['items'][] = $item;
|
226 |
+
|
227 |
+
if (strtolower(substr($name, strrpos($name, '.') + 1)) === 'ts') {
|
228 |
+
continue;
|
229 |
+
}
|
230 |
+
|
231 |
}
|
|
|
232 |
}
|
233 |
|
234 |
foreach( $sum_up AS $ext => $count ) {
|
278 |
)
|
279 |
)
|
280 |
);
|
|
|
|
|
|
|
|
|
281 |
|
282 |
if (isset($err) && $err) {
|
283 |
$json_final['err'] = $err;
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: FolioVision
|
|
3 |
Donate link: https://foliovision.com/donate
|
4 |
Tags: video player, flowplayer, mobile video, html5 video, Vimeo, html5 player, youtube player, youtube playlist, video playlist, RTMP, Cloudfront, HLS
|
5 |
Requires at least: 3.5
|
6 |
-
Tested up to: 5.
|
7 |
Stable tag: trunk
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
@@ -357,6 +357,16 @@ Thank you for being part of the HMTL 5 mobile video revolution!
|
|
357 |
|
358 |
== Changelog ==
|
359 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
360 |
= 7.3.9.727 - 2019/02/05 =
|
361 |
|
362 |
* FV Player wp-admin menu - sorting by player date, latest first
|
3 |
Donate link: https://foliovision.com/donate
|
4 |
Tags: video player, flowplayer, mobile video, html5 video, Vimeo, html5 player, youtube player, youtube playlist, video playlist, RTMP, Cloudfront, HLS
|
5 |
Requires at least: 3.5
|
6 |
+
Tested up to: 5.1.1
|
7 |
Stable tag: trunk
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
357 |
|
358 |
== Changelog ==
|
359 |
|
360 |
+
= 7.3.12.727 - 2019/02/26 =
|
361 |
+
|
362 |
+
* New Feature - Rewind Button - seeks 10 seconds back in the video, enable in Settings -> FV Player -> Sitewide FV Player Defaults
|
363 |
+
* Live stream - removing from Post Interface Options and showing it for HLS streams automatically
|
364 |
+
* Audio - checkbox for HLS streams to make them audio-only
|
365 |
+
* Bugfix - video duration check forgetting to remove fv_flowlayer_tmp_* temporary files
|
366 |
+
* Bugfix - video position saving too many requests when leaving the web page
|
367 |
+
* Bugfix - video start/end time editing for FV Player Pro
|
368 |
+
* Bugfix - too many database checks in wp-admin
|
369 |
+
|
370 |
= 7.3.9.727 - 2019/02/05 =
|
371 |
|
372 |
* FV Player wp-admin menu - sorting by player date, latest first
|
view/admin.php
CHANGED
@@ -291,6 +291,8 @@ function fv_flowplayer_admin_default_options() {
|
|
291 |
<?php $fv_fp->_get_checkbox(__('Popup Box', 'fv-wordpress-flowplayer'), 'popupbox', __('Shows a generic "Would you like to replay the video?" message at the end of each video.', 'fv-wordpress-flowplayer') ); ?>
|
292 |
|
293 |
<?php $fv_fp->_get_checkbox(__('Repeat Button', 'fv-wordpress-flowplayer'), 'ui_repeat_button', __('Adds a button to set playlist/track repeat and shuffle.', 'fv-wordpress-flowplayer') ); ?>
|
|
|
|
|
294 |
|
295 |
<tr>
|
296 |
<td><label for="sharing_text"><?php _e('Sharing Text', 'fv-wordpress-flowplayer'); ?>:</label></td>
|
@@ -830,7 +832,6 @@ function fv_flowplayer_admin_interface_options() {
|
|
830 |
<?php $fv_fp->_get_checkbox(__('Autoplay', 'fv-wordpress-flowplayer'), array('interface', 'autoplay') ); ?>
|
831 |
<?php $fv_fp->_get_checkbox(__('Controlbar', 'fv-wordpress-flowplayer'), array('interface', 'controlbar') ); ?>
|
832 |
<?php $fv_fp->_get_checkbox(__('Embed', 'fv-wordpress-flowplayer'), array('interface', 'embed') ); ?>
|
833 |
-
<?php $fv_fp->_get_checkbox(__('Live Stream', 'fv-wordpress-flowplayer'), array('interface', 'live') ); ?>
|
834 |
<?php $fv_fp->_get_checkbox(__('Mobile Video', 'fv-wordpress-flowplayer'), array('interface', 'mobile') ); ?>
|
835 |
<?php $fv_fp->_get_checkbox(__('Playlist Auto Advance', 'fv-wordpress-flowplayer'), array('interface', 'playlist_advance') ); ?>
|
836 |
<?php $fv_fp->_get_checkbox(__('Playlist Style', 'fv-wordpress-flowplayer'), array('interface', 'playlist') ); ?>
|
291 |
<?php $fv_fp->_get_checkbox(__('Popup Box', 'fv-wordpress-flowplayer'), 'popupbox', __('Shows a generic "Would you like to replay the video?" message at the end of each video.', 'fv-wordpress-flowplayer') ); ?>
|
292 |
|
293 |
<?php $fv_fp->_get_checkbox(__('Repeat Button', 'fv-wordpress-flowplayer'), 'ui_repeat_button', __('Adds a button to set playlist/track repeat and shuffle.', 'fv-wordpress-flowplayer') ); ?>
|
294 |
+
|
295 |
+
<?php $fv_fp->_get_checkbox(__('Rewind Button', 'fv-wordpress-flowplayer'), 'ui_rewind_button', __('Adds a button to go 10 seconds back.', 'fv-wordpress-flowplayer') ); ?>
|
296 |
|
297 |
<tr>
|
298 |
<td><label for="sharing_text"><?php _e('Sharing Text', 'fv-wordpress-flowplayer'); ?>:</label></td>
|
832 |
<?php $fv_fp->_get_checkbox(__('Autoplay', 'fv-wordpress-flowplayer'), array('interface', 'autoplay') ); ?>
|
833 |
<?php $fv_fp->_get_checkbox(__('Controlbar', 'fv-wordpress-flowplayer'), array('interface', 'controlbar') ); ?>
|
834 |
<?php $fv_fp->_get_checkbox(__('Embed', 'fv-wordpress-flowplayer'), array('interface', 'embed') ); ?>
|
|
|
835 |
<?php $fv_fp->_get_checkbox(__('Mobile Video', 'fv-wordpress-flowplayer'), array('interface', 'mobile') ); ?>
|
836 |
<?php $fv_fp->_get_checkbox(__('Playlist Auto Advance', 'fv-wordpress-flowplayer'), array('interface', 'playlist_advance') ); ?>
|
837 |
<?php $fv_fp->_get_checkbox(__('Playlist Style', 'fv-wordpress-flowplayer'), array('interface', 'playlist') ); ?>
|
view/wizard.php
CHANGED
@@ -287,10 +287,15 @@ var fv_flowplayer_preview_nonce = '<?php echo wp_create_nonce( "fv-player-previe
|
|
287 |
<td class="field" colspan="2"><input type="text" class="text<?php echo $upload_field_class; ?>" id="fv_wp_flowplayer_field_caption" name="fv_wp_flowplayer_field_caption" value=""/></td>
|
288 |
</tr>
|
289 |
|
290 |
-
<tr
|
291 |
<th scope="row" class="label"><label for="fv_wp_flowplayer_field_live" class="alignright"><?php _e('Live stream', 'fv_flowplayer'); ?></label></th>
|
292 |
<td class="field"><input type="checkbox" id="fv_wp_flowplayer_field_live" name="fv_wp_flowplayer_field_live" /></td>
|
293 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
294 |
|
295 |
<?php do_action('fv_flowplayer_shortcode_editor_item_after'); ?>
|
296 |
|
@@ -377,12 +382,6 @@ var fv_flowplayer_preview_nonce = '<?php echo wp_create_nonce( "fv-player-previe
|
|
377 |
<?php fv_player_shortcode_row( array( 'label' => 'Align', 'name' => 'align', 'dropdown' => array( 'Default', 'Left', 'Right' ) ) ); ?>
|
378 |
<?php fv_player_shortcode_row( array( 'label' => 'Controlbar', 'name' => 'controlbar', 'dropdown' => array( 'Default', 'Yes', 'No' ) ) ); ?>
|
379 |
<?php fv_player_shortcode_row( array( 'label' => 'Sticky video', 'name' => 'sticky' ) ); ?>
|
380 |
-
|
381 |
-
<tr <?php if( !isset($fv_flowplayer_conf["interface"]["live"]) || $fv_flowplayer_conf["interface"]["live"] !== 'true' ) echo ' class="fv_player_interface_hide"'; ?>>
|
382 |
-
<th scope="row" class="label"><label for="fv_wp_flowplayer_field_live" class="alignright"><?php _e('Live stream', 'fv_flowplayer'); ?></label></th>
|
383 |
-
<td class="field"><input type="checkbox" id="fv_wp_flowplayer_field_live" name="fv_wp_flowplayer_field_live" /></td>
|
384 |
-
</tr>
|
385 |
-
|
386 |
<?php fv_player_shortcode_row( array( 'label' => 'Playlist Style', 'name' => 'playlist', 'dropdown' => array( 'Default', 'Tabs', 'Prev/Next', 'Vertical', 'Horizontal', 'Text', 'Slider' ), 'class' => 'hide-if-singular', 'id' => 'fv_wp_flowplayer_add_format_wrapper' ) ); ?>
|
387 |
<?php fv_player_shortcode_row( array( 'label' => 'Sharing Buttons', 'name' => 'share', 'dropdown' => array( 'Default', 'Yes', 'No', 'Custom' ) ) ); ?>
|
388 |
|
287 |
<td class="field" colspan="2"><input type="text" class="text<?php echo $upload_field_class; ?>" id="fv_wp_flowplayer_field_caption" name="fv_wp_flowplayer_field_caption" value=""/></td>
|
288 |
</tr>
|
289 |
|
290 |
+
<tr class="fv_player_interface_hide">
|
291 |
<th scope="row" class="label"><label for="fv_wp_flowplayer_field_live" class="alignright"><?php _e('Live stream', 'fv_flowplayer'); ?></label></th>
|
292 |
<td class="field"><input type="checkbox" id="fv_wp_flowplayer_field_live" name="fv_wp_flowplayer_field_live" /></td>
|
293 |
</tr>
|
294 |
+
|
295 |
+
<tr class="fv_player_interface_hide">
|
296 |
+
<th scope="row" class="label"><label for="fv_wp_flowplayer_field_audio" class="alignright"><?php _e('Audio stream', 'fv_flowplayer'); ?></label></th>
|
297 |
+
<td class="field"><input type="checkbox" id="fv_wp_flowplayer_field_audio" name="fv_wp_flowplayer_field_audio" /></td>
|
298 |
+
</tr>
|
299 |
|
300 |
<?php do_action('fv_flowplayer_shortcode_editor_item_after'); ?>
|
301 |
|
382 |
<?php fv_player_shortcode_row( array( 'label' => 'Align', 'name' => 'align', 'dropdown' => array( 'Default', 'Left', 'Right' ) ) ); ?>
|
383 |
<?php fv_player_shortcode_row( array( 'label' => 'Controlbar', 'name' => 'controlbar', 'dropdown' => array( 'Default', 'Yes', 'No' ) ) ); ?>
|
384 |
<?php fv_player_shortcode_row( array( 'label' => 'Sticky video', 'name' => 'sticky' ) ); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
385 |
<?php fv_player_shortcode_row( array( 'label' => 'Playlist Style', 'name' => 'playlist', 'dropdown' => array( 'Default', 'Tabs', 'Prev/Next', 'Vertical', 'Horizontal', 'Text', 'Slider' ), 'class' => 'hide-if-singular', 'id' => 'fv_wp_flowplayer_add_format_wrapper' ) ); ?>
|
386 |
<?php fv_player_shortcode_row( array( 'label' => 'Sharing Buttons', 'name' => 'share', 'dropdown' => array( 'Default', 'Yes', 'No', 'Custom' ) ) ); ?>
|
387 |
|