Version Description
- 2018/07/10 =
New users get FV Player 7 Beta (7.1.6.726.beta) automatically!
- Making sure big custom logo won't prevent video playback due to blocking clicks
- Playlist - setting maximum player width to 100% to prevent display issues
- Preventing right mouse click on player
- XML Video Sitemap and Schema.org - fixing exclusion for CloudFront domains
Download this release
Release Info
Developer | FolioVision |
Plugin | FV Flowplayer Video Player |
Version | 6.6.6 |
Comparing to | |
See all releases |
Code changes from version 6.6.5 to 6.6.6
- beta-changelog.txt +61 -0
- beta-update.txt +4 -0
- controller/backend.php +22 -1
- controller/frontend.php +8 -3
- controller/settings.php +136 -1
- css/fancybox.css +813 -0
- css/flowplayer-beta.css +9 -17
- css/flowplayer.css +2 -2
- css/license.css +0 -2
- flowplayer-beta/fv-flowplayer.min.js +61 -49
- flowplayer.php +3 -3
- flowplayer/fv-flowplayer.min.js +8 -4
- includes/fp-api-private.php +15 -8
- js/fancybox.js +193 -0
- js/lightbox.js +9 -0
- models/email-subscription.php +1 -0
- models/flowplayer-frontend.php +7 -3
- models/flowplayer.php +20 -16
- models/lightbox.php +65 -14
- models/seo.php +29 -0
- models/xml-video-sitemap.php +10 -0
- readme.txt +9 -0
- test/integration-7/backend/profileVideosTest.php +47 -0
- test/integration-7/backend/settingsTest.php +49 -0
- test/integration-7/backend/testProfileScreen.html +54 -0
- test/integration-7/backend/testSettingsScreen.html +2053 -0
- test/integration-7/backend/videointelligenceInstallTest.php +80 -0
- test/integration-7/bootstrap.php +38 -0
- test/integration-7/frontend/1-shortcodesTest.php +52 -0
- test/integration-7/frontend/endActionsTest.php +164 -0
- test/integration-7/frontend/shortcodesLightboxTest.php +168 -0
- test/integration-7/frontend/shortcodesPlaylistTest.php +156 -0
- test/integration-7/frontend/testSimpleShortcode.html +82 -0
- test/integration-7/frontend/videoPositionSavingTest.php +151 -0
- test/integration-7/fv-player-ajax-unittest-case.php +67 -0
- test/integration-7/fv-player-unittest-case.php +74 -0
- test/integration-7/phpunit.xml +8 -0
- test/integration/backend/testSettingsScreen.html +3 -3
- test/integration/bootstrap.php +1 -0
- test/integration/frontend/shortcodesPlaylistTest.php +4 -4
- test/integration/frontend/videoPositionSavingTest.php +2 -2
- test/integration/fv-player-ajax-unittest-case.php +1 -1
- test/integration/fv-player-unittest-case.php +2 -2
- test/unit/controller/frontendTest.php +1 -0
- view/admin-beta.php +2 -4
- view/admin.php +1 -1
beta-changelog.txt
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
== Changelog ==
|
2 |
+
|
3 |
+
= 7.1.12.726.beta =
|
4 |
+
|
5 |
+
* Audio player - making sure "Force fullscreen on mobile" doesn't work for it as it makes no sense
|
6 |
+
* Getting rid of the old video tag code
|
7 |
+
|
8 |
+
= 7.1.11.726.beta =
|
9 |
+
|
10 |
+
* Fixing subtitle size setting
|
11 |
+
|
12 |
+
= 7.1.10.726.beta =
|
13 |
+
|
14 |
+
* Fixing fp-header and notices click action
|
15 |
+
* Fixing fullscreen when Fancybox is enabled for images, but not used for video
|
16 |
+
|
17 |
+
= 7.1.7.726 =
|
18 |
+
|
19 |
+
* Fixes for lightbox - proper title for images in h5, hiding WP admin bar and Social Warfare bar, support for WP Rocket image lazyload
|
20 |
+
|
21 |
+
= 7.1.6.726 =
|
22 |
+
|
23 |
+
* New lightbox library - using fancyBox 3
|
24 |
+
* Playlist - setting maximum player width to 100% to prevent display issues
|
25 |
+
* Preventing right mouse click on player
|
26 |
+
* XML Video Sitemap and Schema.org - fixing exclusion for CloudFront domains
|
27 |
+
|
28 |
+
= 7.1.5.726 =
|
29 |
+
|
30 |
+
* Lightbox - fixing height bug if video is bigger than screen size and taller
|
31 |
+
|
32 |
+
= 7.1.4.726 =
|
33 |
+
|
34 |
+
* Fix for MPEG-DASH (Vimeo) stream seeking issues which appeared when seeking too often
|
35 |
+
|
36 |
+
= 7.1.3.726 =
|
37 |
+
|
38 |
+
* Fix for MPEG-DASH (Vimeo) silent autoplay, important for Chrome
|
39 |
+
|
40 |
+
= 7.1.2.726 =
|
41 |
+
|
42 |
+
* iOS < 10 fix
|
43 |
+
* Quality selection menu is now sorted
|
44 |
+
* Quality selection for HLS stream is not remembered
|
45 |
+
* Quality button now shows proper quality label
|
46 |
+
* Samsung Browser shows warning to use other browser if there is a video error
|
47 |
+
* Speed menu now get a vertical scrollbar if needed
|
48 |
+
|
49 |
+
= 7.1.1.726 =
|
50 |
+
|
51 |
+
* Dash current quality bold in qs menu
|
52 |
+
* Dash JS quality remembering
|
53 |
+
* Showing the fallback no-svg play icon during player load time and for lightbox starters
|
54 |
+
|
55 |
+
= 7.1.726 =
|
56 |
+
|
57 |
+
* Fixing FV Player 7 license key - it was mangled when saving the settings
|
58 |
+
|
59 |
+
= 7.0.726 =
|
60 |
+
|
61 |
+
* Initial FV Player 7 release for FV Player Pro Beta users
|
beta-update.txt
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
This files is used to signal there is a new version out of the beta users
|
3 |
+
*/
|
4 |
+
O:8:"stdClass":5:{s:7:"version";s:10:"7.1.12.726";s:11:"new_version";s:10:"7.1.12.726";s:4:"date";s:10:"2018-08-14";s:7:"package";s:66:"https://downloads.wordpress.org/plugin/fv-wordpress-flowplayer.zip";s:4:"slug";s:23:"fv-wordpress-flowplayer";}
|
controller/backend.php
CHANGED
@@ -754,7 +754,7 @@ function fv_player_block_update( $arg ) {
|
|
754 |
|
755 |
|
756 |
/*
|
757 |
-
Beta plugin needs to show different
|
758 |
*/
|
759 |
add_filter( 'all_plugins', 'fv_player_beta_adjust_plugin_version' );
|
760 |
|
@@ -769,3 +769,24 @@ function fv_player_beta_adjust_plugin_version( $aPlugins ) {
|
|
769 |
return $aPlugins;
|
770 |
}
|
771 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
754 |
|
755 |
|
756 |
/*
|
757 |
+
Beta plugin needs to show different version on the plugins screen
|
758 |
*/
|
759 |
add_filter( 'all_plugins', 'fv_player_beta_adjust_plugin_version' );
|
760 |
|
769 |
return $aPlugins;
|
770 |
}
|
771 |
|
772 |
+
|
773 |
+
/*
|
774 |
+
Beta version to not show release updates
|
775 |
+
*/
|
776 |
+
add_filter( 'site_transient_update_plugins', 'fv_player_beta_stop_release_updates' );
|
777 |
+
|
778 |
+
function fv_player_beta_stop_release_updates( $objUpdates ) {
|
779 |
+
if( !flowplayer::is_beta() || !$objUpdates || !isset($objUpdates->response) || count($objUpdates->response) == 0 ) return $objUpdates;
|
780 |
+
|
781 |
+
global $fv_wp_flowplayer_ver_beta;
|
782 |
+
foreach( $objUpdates->response AS $key => $objUpdate ) {
|
783 |
+
if( stripos($key,'fv-wordpress-flowplayer') === 0 ) {
|
784 |
+
if( version_compare($objUpdate->new_version,$fv_wp_flowplayer_ver_beta) == -1 ) {
|
785 |
+
unset($objUpdates->response[$key]);
|
786 |
+
}
|
787 |
+
}
|
788 |
+
}
|
789 |
+
|
790 |
+
return $objUpdates;
|
791 |
+
}
|
792 |
+
|
controller/frontend.php
CHANGED
@@ -71,6 +71,7 @@ function fv_flowplayer_get_js_translations() {
|
|
71 |
'check_failed' =>__('Admin: Check failed.','fv-wordpress-flowplayer'),
|
72 |
'playlist_current' =>__('Now Playing','fv-wordpress-flowplayer'),
|
73 |
'video_issues' =>__('Video Issues','fv-wordpress-flowplayer'),
|
|
|
74 |
'link_copied' =>__('Video Link Copied to Clipboard','fv-wordpress-flowplayer'),
|
75 |
'embed_copied' =>__('Embed Code Copied to Clipboard','fv-wordpress-flowplayer'),
|
76 |
'subtitles_disabled' =>__('Subtitles disabled','fv-wordpress-flowplayer'),
|
@@ -395,7 +396,7 @@ function flowplayer_prepare_scripts() {
|
|
395 |
wp_localize_script( 'flowplayer', 'fv_flowplayer_translations', fv_flowplayer_get_js_translations());
|
396 |
wp_localize_script( 'flowplayer', 'fv_fp_ajaxurl', site_url().'/wp-admin/admin-ajax.php' );
|
397 |
|
398 |
-
if( $fv_fp->_get_option('old_code') ) {
|
399 |
wp_localize_script( 'flowplayer', 'fv_flowplayer_playlists', $fv_fp->aPlaylists );
|
400 |
} else {
|
401 |
wp_localize_script( 'flowplayer', 'fv_flowplayer_playlists', array() ); // has to be defined for FV Player Pro 0.6.20 and such
|
@@ -426,8 +427,12 @@ function flowplayer_prepare_scripts() {
|
|
426 |
$aConf['lightbox_images'] = $fv_fp->_get_option('lightbox_images');
|
427 |
|
428 |
if( !$FV_Player_lightbox->bCSSLoaded ) $FV_Player_lightbox->css_enqueue(true);
|
429 |
-
|
430 |
-
|
|
|
|
|
|
|
|
|
431 |
wp_localize_script( 'fv_player_lightbox', 'fv_player_lightbox', $aConf );
|
432 |
|
433 |
}
|
71 |
'check_failed' =>__('Admin: Check failed.','fv-wordpress-flowplayer'),
|
72 |
'playlist_current' =>__('Now Playing','fv-wordpress-flowplayer'),
|
73 |
'video_issues' =>__('Video Issues','fv-wordpress-flowplayer'),
|
74 |
+
'video_reload' =>__('Video loading has stalled, click to reload','fv-wordpress-flowplayer'),
|
75 |
'link_copied' =>__('Video Link Copied to Clipboard','fv-wordpress-flowplayer'),
|
76 |
'embed_copied' =>__('Embed Code Copied to Clipboard','fv-wordpress-flowplayer'),
|
77 |
'subtitles_disabled' =>__('Subtitles disabled','fv-wordpress-flowplayer'),
|
396 |
wp_localize_script( 'flowplayer', 'fv_flowplayer_translations', fv_flowplayer_get_js_translations());
|
397 |
wp_localize_script( 'flowplayer', 'fv_fp_ajaxurl', site_url().'/wp-admin/admin-ajax.php' );
|
398 |
|
399 |
+
if( $fv_fp->_get_option('old_code') && !$fv_fp->is_beta() ) {
|
400 |
wp_localize_script( 'flowplayer', 'fv_flowplayer_playlists', $fv_fp->aPlaylists );
|
401 |
} else {
|
402 |
wp_localize_script( 'flowplayer', 'fv_flowplayer_playlists', array() ); // has to be defined for FV Player Pro 0.6.20 and such
|
427 |
$aConf['lightbox_images'] = $fv_fp->_get_option('lightbox_images');
|
428 |
|
429 |
if( !$FV_Player_lightbox->bCSSLoaded ) $FV_Player_lightbox->css_enqueue(true);
|
430 |
+
|
431 |
+
if( !$FV_Player_lightbox->is_fancybox() ) {
|
432 |
+
wp_enqueue_script( 'fv_player_lightbox', flowplayer::get_plugin_url().'/js/lightbox.js', 'jquery', $fv_wp_flowplayer_ver, true );
|
433 |
+
} else {
|
434 |
+
wp_enqueue_script( 'fv_player_lightbox', flowplayer::get_plugin_url().'/js/fancybox.js', 'jquery', $fv_wp_flowplayer_ver, true );
|
435 |
+
}
|
436 |
wp_localize_script( 'fv_player_lightbox', 'fv_player_lightbox', $aConf );
|
437 |
|
438 |
}
|
controller/settings.php
CHANGED
@@ -83,7 +83,7 @@ add_filter( 'get_user_option_closedpostboxes_fv_flowplayer_settings', 'fv_wp_flo
|
|
83 |
|
84 |
function fv_wp_flowplayer_closed_meta_boxes( $closed ) {
|
85 |
if ( false === $closed )
|
86 |
-
$closed = array( 'fv_flowplayer_amazon_options', 'fv_flowplayer_interface_options', 'fv_flowplayer_default_options', 'fv_flowplayer_ads', 'fv_flowplayer_integrations', 'fv_player_pro' );
|
87 |
|
88 |
return $closed;
|
89 |
}
|
@@ -146,6 +146,37 @@ function fv_player_admin_pointer_boxes() {
|
|
146 |
);
|
147 |
}
|
148 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
if(
|
150 |
(stripos( $_SERVER['REQUEST_URI'], '/plugins.php') !== false ||fv_player_is_admin_screen() )
|
151 |
&& $pnotices = get_option('fv_wordpress_flowplayer_persistent_notices')
|
@@ -198,6 +229,26 @@ function fv_wp_flowplayer_pointers_ajax() {
|
|
198 |
die();
|
199 |
}
|
200 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
201 |
if( isset($_POST['key']) && $_POST['key'] == 'fv_player_notification_video_links' && isset($_POST['value']) ) {
|
202 |
check_ajax_referer('fv_player_notification_video_links');
|
203 |
$conf = get_option( 'fvwpflowplayer' );
|
@@ -304,3 +355,87 @@ function flowplayer_admin_footer_wp_js_restore() {
|
|
304 |
</script>
|
305 |
<?php
|
306 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
|
84 |
function fv_wp_flowplayer_closed_meta_boxes( $closed ) {
|
85 |
if ( false === $closed )
|
86 |
+
$closed = array( 'fv_flowplayer_amazon_options', 'fv_flowplayer_interface_options', 'fv_flowplayer_default_options', 'fv_flowplayer_ads', 'fv_flowplayer_integrations', 'fv_flowplayer_mobile', 'fv_flowplayer_seo', 'fv_flowplayer_conversion', 'fv_player_pro' );
|
87 |
|
88 |
return $closed;
|
89 |
}
|
146 |
);
|
147 |
}
|
148 |
|
149 |
+
if( $fv_fp->is_beta() && !$fv_fp->_get_option('notice_new_lightbox') ) {
|
150 |
+
$fv_fp->pointer_boxes['fv_flowplayer_new_lightbox'] = array(
|
151 |
+
'id' => '#wp-admin-bar-new-content',
|
152 |
+
'pointerClass' => 'fv_flowplayer_new_lightbox',
|
153 |
+
'heading' => __('FV Player Video Lightbox', 'fv-wordpress-flowplayer'),
|
154 |
+
'content' => __("<p>The lightbox technology has been changed from <a href='http://www.jacklmoore.com/colorbox/' target='_blank'>Colorbox</a> to <a href='https://fancyapps.com/fancybox/3/' target='_blank'>fancyBox</a></p><p>Please <a href='https://foliovision.com/support/fv-wordpress-flowplayer/bug-reports#new-post' target='_blank'>let us know</a> in case you notice any issues. You can check <a href='https://foliovision.com/player/demos/fv-flowplayer-lightbox' target='_blank'>our FV Player demo page</a> of it too.</p>", 'fv-wordpress-flowplayer'),
|
155 |
+
'position' => array( 'edge' => 'top', 'align' => 'center' ),
|
156 |
+
'button1' => __('Acknowledge', 'fv-wordpress-flowplayer'),
|
157 |
+
'button2' => '<style>.fv_flowplayer_new_lightbox .button-secondary { display: none }</style>'
|
158 |
+
);
|
159 |
+
}
|
160 |
+
|
161 |
+
if( $fv_fp->is_beta() && $fv_fp->_get_option('nag_fv_player_7') ) {
|
162 |
+
$fv_fp->pointer_boxes['fv_flowplayer_fv_player_7'] = array(
|
163 |
+
'id' => '#wp-admin-bar-new-content',
|
164 |
+
'pointerClass' => 'fv_flowplayer_fv_player_7',
|
165 |
+
'heading' => __('FV Player 7 Bera', 'fv-wordpress-flowplayer'),
|
166 |
+
'content' => '<p>Welcome to the brand new FV Player 7 Beta! Improvements include:</p>'.
|
167 |
+
'<ul style="list-style: circle; padding-left: 3em;"><li>New player design and skin options</li>
|
168 |
+
<li>New Flowplayer core video engine</li>
|
169 |
+
<li>Support for autoplay on mobile</li>
|
170 |
+
<li>New lightbox look</li>
|
171 |
+
<li>Improved video buffering</li></ul>'.
|
172 |
+
'<p>More information in our <a href="https://foliovision.com/2018/05/fv-player-7-beta" target="_blank">blog announcement</a>.</p>'.
|
173 |
+
'<p>In case of any issues you can still switch back to the release verson on the <a href="' . admin_url('options-general.php?page=fvplayer') . '">settings screen</a>. Please also file in a <a href="https://foliovision.com/support/fv-wordpress-flowplayer/bug-reports#new-post" target="_blank">bug report</a>.</p>',
|
174 |
+
'position' => array( 'edge' => 'top', 'align' => 'center' ),
|
175 |
+
'button1' => __('Acknowledge', 'fv-wordpress-flowplayer'),
|
176 |
+
'button2' => '<style>.fv_flowplayer_fv_player_7 .button-secondary { display: none }</style>'
|
177 |
+
);
|
178 |
+
}
|
179 |
+
|
180 |
if(
|
181 |
(stripos( $_SERVER['REQUEST_URI'], '/plugins.php') !== false ||fv_player_is_admin_screen() )
|
182 |
&& $pnotices = get_option('fv_wordpress_flowplayer_persistent_notices')
|
229 |
die();
|
230 |
}
|
231 |
|
232 |
+
if( isset($_POST['key']) && $_POST['key'] == 'fv_flowplayer_new_lightbox' && isset($_POST['value']) ) {
|
233 |
+
check_ajax_referer('fv_flowplayer_new_lightbox');
|
234 |
+
$conf = get_option( 'fvwpflowplayer' );
|
235 |
+
if( $conf ) {
|
236 |
+
$conf['notice_new_lightbox'] = 'true';
|
237 |
+
update_option( 'fvwpflowplayer', $conf );
|
238 |
+
}
|
239 |
+
die();
|
240 |
+
}
|
241 |
+
|
242 |
+
if( isset($_POST['key']) && $_POST['key'] == 'fv_flowplayer_fv_player_7' && isset($_POST['value']) ) {
|
243 |
+
check_ajax_referer('fv_flowplayer_fv_player_7');
|
244 |
+
$conf = get_option( 'fvwpflowplayer' );
|
245 |
+
if( $conf ) {
|
246 |
+
unset($conf['nag_fv_player_7']);
|
247 |
+
update_option( 'fvwpflowplayer', $conf );
|
248 |
+
}
|
249 |
+
die();
|
250 |
+
}
|
251 |
+
|
252 |
if( isset($_POST['key']) && $_POST['key'] == 'fv_player_notification_video_links' && isset($_POST['value']) ) {
|
253 |
check_ajax_referer('fv_player_notification_video_links');
|
254 |
$conf = get_option( 'fvwpflowplayer' );
|
355 |
</script>
|
356 |
<?php
|
357 |
}
|
358 |
+
|
359 |
+
|
360 |
+
/*
|
361 |
+
Beta switcher interface
|
362 |
+
*/
|
363 |
+
add_action( 'plugins_loaded', 'fv_player_version_switcher_init' );
|
364 |
+
|
365 |
+
function fv_player_version_switcher_init() {
|
366 |
+
global $FV_Player_Pro;
|
367 |
+
if( !empty($FV_Player_Pro) ) return;
|
368 |
+
|
369 |
+
add_action( 'admin_notices', 'fv_player_version_switcher_start', 999999 );
|
370 |
+
add_action( 'fv_player_settings_pre', 'fv_player_version_switcher' );
|
371 |
+
add_action( 'fv_flowplayer_admin_buttons_after', 'fv_player_version_switcher_script' );
|
372 |
+
add_action( 'admin_footer', 'fv_player_version_switcher_save' );
|
373 |
+
}
|
374 |
+
|
375 |
+
function fv_player_version_switcher_start() {
|
376 |
+
if( isset($_GET['page']) && $_GET['page'] == 'fvplayer' ) ob_start();
|
377 |
+
}
|
378 |
+
|
379 |
+
function fv_player_version_switcher() {
|
380 |
+
$html = ob_get_clean();
|
381 |
+
|
382 |
+
$select = "<select id='fv-player-pro-release' name='fv-player-pro-release'>";
|
383 |
+
$select .= "<option".( fv_player_version_switcher_get_release() == 'beta' ? " selected" : "" )." value='beta'>Beta</option>";
|
384 |
+
$select .= "<option".( fv_player_version_switcher_get_release() == 'release' ? " selected" : "" )." value='release'>Release</option>";
|
385 |
+
$select .= "</select>";
|
386 |
+
|
387 |
+
$html = str_replace('<h2>FV Player</h2>','<form action="" method="post"><h2>FV Player '.$select.'</h2><input type="hidden" name="fv_player_pro_switch" value="' . wp_create_nonce( 'fv_player_pro_switch' ) . '" /></form>',$html);
|
388 |
+
|
389 |
+
echo $html;
|
390 |
+
}
|
391 |
+
|
392 |
+
function fv_player_version_switcher_get_release() {
|
393 |
+
$release = isset($_POST['fv-player-pro-release']) && isset($_REQUEST['fv_player_pro_switch']) ? $_POST['fv-player-pro-release'] : get_option('fv-player-pro-release');
|
394 |
+
if( !$release ) {
|
395 |
+
$release = 'release';
|
396 |
+
}
|
397 |
+
return $release;
|
398 |
+
}
|
399 |
+
|
400 |
+
function fv_player_version_switcher_script() {
|
401 |
+
?>
|
402 |
+
<script>
|
403 |
+
jQuery('#fv-player-pro-release').change( function() {
|
404 |
+
var question = '';
|
405 |
+
var version = jQuery(this).val().toLowerCase();
|
406 |
+
|
407 |
+
switch( version )
|
408 |
+
{
|
409 |
+
case "beta":
|
410 |
+
question = '<?php _e('Are you sure you want to switch your FV Player release to beta?', 'fv-wordpress-flowplayer'); ?>';
|
411 |
+
break;
|
412 |
+
case "release":
|
413 |
+
question = '<?php _e('Are you sure you want to switch your FV Player beta to release?', 'fv-wordpress-flowplayer'); ?>';
|
414 |
+
break;
|
415 |
+
case "stable":
|
416 |
+
|
417 |
+
break;
|
418 |
+
default:
|
419 |
+
console.log('version_switcher_script -> unexpected version');
|
420 |
+
}
|
421 |
+
|
422 |
+
if( !confirm(question) )
|
423 |
+
{
|
424 |
+
jQuery(this).val( '<?php echo fv_player_version_switcher_get_release(); ?>' );
|
425 |
+
return false;
|
426 |
+
}
|
427 |
+
|
428 |
+
jQuery('#fv-player-pro-release').parents('form').submit();
|
429 |
+
});
|
430 |
+
</script>
|
431 |
+
<?php
|
432 |
+
}
|
433 |
+
|
434 |
+
function fv_player_version_switcher_save() {
|
435 |
+
if( isset($_POST['fv-player-pro-release']) && isset($_REQUEST['fv_player_pro_switch']) && wp_verify_nonce( $_REQUEST['fv_player_pro_switch'], 'fv_player_pro_switch') ) {
|
436 |
+
update_option('fv-player-pro-release',$_POST['fv-player-pro-release']);
|
437 |
+
|
438 |
+
global $fv_fp;
|
439 |
+
$fv_fp->css_writeout();
|
440 |
+
}
|
441 |
+
}
|
css/fancybox.css
ADDED
@@ -0,0 +1,813 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
body.compensate-for-scrollbar {
|
2 |
+
overflow: hidden; }
|
3 |
+
|
4 |
+
.fancybox-active {
|
5 |
+
height: auto; }
|
6 |
+
|
7 |
+
.fancybox-is-hidden {
|
8 |
+
left: -9999px;
|
9 |
+
margin: 0;
|
10 |
+
position: absolute !important;
|
11 |
+
top: -9999px;
|
12 |
+
visibility: hidden; }
|
13 |
+
|
14 |
+
.fancybox-container {
|
15 |
+
-webkit-backface-visibility: hidden;
|
16 |
+
backface-visibility: hidden;
|
17 |
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji',
|
18 |
+
'Segoe UI Emoji', 'Segoe UI Symbol';
|
19 |
+
height: 100%;
|
20 |
+
left: 0;
|
21 |
+
position: fixed;
|
22 |
+
-webkit-tap-highlight-color: transparent;
|
23 |
+
top: 0;
|
24 |
+
-webkit-transform: translateZ(0);
|
25 |
+
transform: translateZ(0);
|
26 |
+
width: 100%;
|
27 |
+
z-index: 99992; }
|
28 |
+
|
29 |
+
.fancybox-container * {
|
30 |
+
box-sizing: border-box; }
|
31 |
+
|
32 |
+
.fancybox-outer,
|
33 |
+
.fancybox-inner,
|
34 |
+
.fancybox-bg,
|
35 |
+
.fancybox-stage {
|
36 |
+
bottom: 0;
|
37 |
+
left: 0;
|
38 |
+
position: absolute;
|
39 |
+
right: 0;
|
40 |
+
top: 0; }
|
41 |
+
|
42 |
+
.fancybox-outer {
|
43 |
+
-webkit-overflow-scrolling: touch;
|
44 |
+
overflow-y: auto; }
|
45 |
+
|
46 |
+
.fancybox-bg {
|
47 |
+
background: #1e1e1e;
|
48 |
+
opacity: 0;
|
49 |
+
transition-duration: inherit;
|
50 |
+
transition-property: opacity;
|
51 |
+
transition-timing-function: cubic-bezier(0.47, 0, 0.74, 0.71); }
|
52 |
+
|
53 |
+
.fancybox-is-open .fancybox-bg {
|
54 |
+
opacity: .87;
|
55 |
+
transition-timing-function: cubic-bezier(0.22, 0.61, 0.36, 1); }
|
56 |
+
|
57 |
+
.fancybox-infobar,
|
58 |
+
.fancybox-toolbar,
|
59 |
+
.fancybox-caption,
|
60 |
+
.fancybox-navigation .fancybox-button {
|
61 |
+
direction: ltr;
|
62 |
+
opacity: 0;
|
63 |
+
position: absolute;
|
64 |
+
transition: opacity .25s, visibility 0s linear .25s;
|
65 |
+
visibility: hidden;
|
66 |
+
z-index: 99997; }
|
67 |
+
|
68 |
+
.fancybox-show-infobar .fancybox-infobar,
|
69 |
+
.fancybox-show-toolbar .fancybox-toolbar,
|
70 |
+
.fancybox-show-caption .fancybox-caption,
|
71 |
+
.fancybox-show-nav .fancybox-navigation .fancybox-button {
|
72 |
+
opacity: 1;
|
73 |
+
transition: opacity .25s, visibility 0s;
|
74 |
+
visibility: visible; }
|
75 |
+
|
76 |
+
.fancybox-infobar {
|
77 |
+
color: #ccc;
|
78 |
+
font-size: 13px;
|
79 |
+
-webkit-font-smoothing: subpixel-antialiased;
|
80 |
+
height: 44px;
|
81 |
+
left: 0;
|
82 |
+
line-height: 44px;
|
83 |
+
min-width: 44px;
|
84 |
+
mix-blend-mode: difference;
|
85 |
+
padding: 0 10px;
|
86 |
+
pointer-events: none;
|
87 |
+
text-align: center;
|
88 |
+
top: 0;
|
89 |
+
-webkit-touch-callout: none;
|
90 |
+
-webkit-user-select: none;
|
91 |
+
-moz-user-select: none;
|
92 |
+
-ms-user-select: none;
|
93 |
+
user-select: none; }
|
94 |
+
|
95 |
+
.fancybox-toolbar {
|
96 |
+
right: 0;
|
97 |
+
top: 0; }
|
98 |
+
|
99 |
+
.fancybox-stage {
|
100 |
+
direction: ltr;
|
101 |
+
overflow: visible;
|
102 |
+
-webkit-transform: translate3d(0, 0, 0);
|
103 |
+
z-index: 99994; }
|
104 |
+
|
105 |
+
.fancybox-is-open .fancybox-stage {
|
106 |
+
overflow: hidden; }
|
107 |
+
|
108 |
+
.fancybox-slide {
|
109 |
+
-webkit-backface-visibility: hidden;
|
110 |
+
backface-visibility: hidden;
|
111 |
+
display: none;
|
112 |
+
height: 100%;
|
113 |
+
left: 0;
|
114 |
+
outline: none;
|
115 |
+
overflow: auto;
|
116 |
+
-webkit-overflow-scrolling: touch;
|
117 |
+
padding: 44px;
|
118 |
+
position: absolute;
|
119 |
+
text-align: center;
|
120 |
+
top: 0;
|
121 |
+
transition-property: opacity, -webkit-transform;
|
122 |
+
transition-property: transform, opacity;
|
123 |
+
transition-property: transform, opacity, -webkit-transform;
|
124 |
+
white-space: normal;
|
125 |
+
width: 100%;
|
126 |
+
z-index: 99994; }
|
127 |
+
|
128 |
+
.fancybox-slide::before {
|
129 |
+
content: '';
|
130 |
+
display: inline-block;
|
131 |
+
height: 100%;
|
132 |
+
margin-right: -.25em;
|
133 |
+
vertical-align: middle;
|
134 |
+
width: 0; }
|
135 |
+
|
136 |
+
.fancybox-is-sliding .fancybox-slide,
|
137 |
+
.fancybox-slide--previous,
|
138 |
+
.fancybox-slide--current,
|
139 |
+
.fancybox-slide--next {
|
140 |
+
display: block; }
|
141 |
+
|
142 |
+
.fancybox-slide--next {
|
143 |
+
z-index: 99995; }
|
144 |
+
|
145 |
+
.fancybox-slide--image {
|
146 |
+
overflow: visible;
|
147 |
+
padding: 44px 0; }
|
148 |
+
|
149 |
+
.fancybox-slide--image::before {
|
150 |
+
display: none; }
|
151 |
+
|
152 |
+
.fancybox-slide--html {
|
153 |
+
padding: 6px 6px 0 6px; }
|
154 |
+
|
155 |
+
.fancybox-slide--iframe {
|
156 |
+
padding: 44px 44px 0; }
|
157 |
+
|
158 |
+
.fancybox-content {
|
159 |
+
background: #fff;
|
160 |
+
display: inline-block;
|
161 |
+
margin: 0 0 6px 0;
|
162 |
+
max-width: 100%;
|
163 |
+
overflow: auto;
|
164 |
+
padding: 0;
|
165 |
+
padding: 24px;
|
166 |
+
position: relative;
|
167 |
+
text-align: left;
|
168 |
+
vertical-align: middle; }
|
169 |
+
|
170 |
+
.fancybox-slide--image .fancybox-content {
|
171 |
+
-webkit-animation-timing-function: cubic-bezier(0.5, 0, 0.14, 1);
|
172 |
+
animation-timing-function: cubic-bezier(0.5, 0, 0.14, 1);
|
173 |
+
-webkit-backface-visibility: hidden;
|
174 |
+
backface-visibility: hidden;
|
175 |
+
background: transparent;
|
176 |
+
background-repeat: no-repeat;
|
177 |
+
background-size: 100% 100%;
|
178 |
+
left: 0;
|
179 |
+
margin: 0;
|
180 |
+
max-width: none;
|
181 |
+
overflow: visible;
|
182 |
+
padding: 0;
|
183 |
+
position: absolute;
|
184 |
+
top: 0;
|
185 |
+
-webkit-transform-origin: top left;
|
186 |
+
-ms-transform-origin: top left;
|
187 |
+
transform-origin: top left;
|
188 |
+
transition-property: opacity, -webkit-transform;
|
189 |
+
transition-property: transform, opacity;
|
190 |
+
transition-property: transform, opacity, -webkit-transform;
|
191 |
+
-webkit-user-select: none;
|
192 |
+
-moz-user-select: none;
|
193 |
+
-ms-user-select: none;
|
194 |
+
user-select: none;
|
195 |
+
z-index: 99995; }
|
196 |
+
|
197 |
+
.fancybox-can-zoomOut .fancybox-content {
|
198 |
+
cursor: -webkit-zoom-out;
|
199 |
+
cursor: zoom-out; }
|
200 |
+
|
201 |
+
.fancybox-can-zoomIn .fancybox-content {
|
202 |
+
cursor: -webkit-zoom-in;
|
203 |
+
cursor: zoom-in; }
|
204 |
+
|
205 |
+
.fancybox-can-drag .fancybox-content {
|
206 |
+
cursor: -webkit-grab;
|
207 |
+
cursor: grab; }
|
208 |
+
|
209 |
+
.fancybox-is-dragging .fancybox-content {
|
210 |
+
cursor: -webkit-grabbing;
|
211 |
+
cursor: grabbing; }
|
212 |
+
|
213 |
+
.fancybox-container [data-selectable='true'] {
|
214 |
+
cursor: text; }
|
215 |
+
|
216 |
+
.fancybox-image,
|
217 |
+
.fancybox-spaceball {
|
218 |
+
background: transparent;
|
219 |
+
border: 0;
|
220 |
+
height: 100%;
|
221 |
+
left: 0;
|
222 |
+
margin: 0;
|
223 |
+
max-height: none;
|
224 |
+
max-width: none;
|
225 |
+
padding: 0;
|
226 |
+
position: absolute;
|
227 |
+
top: 0;
|
228 |
+
-webkit-user-select: none;
|
229 |
+
-moz-user-select: none;
|
230 |
+
-ms-user-select: none;
|
231 |
+
user-select: none;
|
232 |
+
width: 100%; }
|
233 |
+
|
234 |
+
.fancybox-spaceball {
|
235 |
+
z-index: 1; }
|
236 |
+
|
237 |
+
.fancybox-slide--html .fancybox-content {
|
238 |
+
margin-bottom: 6px; }
|
239 |
+
|
240 |
+
.fancybox-slide--video .fancybox-content,
|
241 |
+
.fancybox-slide--map .fancybox-content,
|
242 |
+
.fancybox-slide--iframe .fancybox-content {
|
243 |
+
height: 100%;
|
244 |
+
margin: 0;
|
245 |
+
overflow: visible;
|
246 |
+
padding: 0;
|
247 |
+
width: 100%; }
|
248 |
+
|
249 |
+
.fancybox-slide--video .fancybox-content {
|
250 |
+
background: #000; }
|
251 |
+
|
252 |
+
.fancybox-slide--map .fancybox-content {
|
253 |
+
background: #e5e3df; }
|
254 |
+
|
255 |
+
.fancybox-slide--iframe .fancybox-content {
|
256 |
+
background: #fff;
|
257 |
+
height: calc(100% - 44px);
|
258 |
+
margin-bottom: 44px; }
|
259 |
+
|
260 |
+
.fancybox-video,
|
261 |
+
.fancybox-iframe {
|
262 |
+
background: transparent;
|
263 |
+
border: 0;
|
264 |
+
height: 100%;
|
265 |
+
margin: 0;
|
266 |
+
overflow: hidden;
|
267 |
+
padding: 0;
|
268 |
+
width: 100%; }
|
269 |
+
|
270 |
+
.fancybox-iframe {
|
271 |
+
vertical-align: top; }
|
272 |
+
|
273 |
+
.fancybox-error {
|
274 |
+
background: #fff;
|
275 |
+
cursor: default;
|
276 |
+
max-width: 400px;
|
277 |
+
padding: 40px;
|
278 |
+
width: 100%; }
|
279 |
+
|
280 |
+
.fancybox-error p {
|
281 |
+
color: #444;
|
282 |
+
font-size: 16px;
|
283 |
+
line-height: 20px;
|
284 |
+
margin: 0;
|
285 |
+
padding: 0; }
|
286 |
+
|
287 |
+
/* Buttons */
|
288 |
+
.fancybox-button {
|
289 |
+
background: rgba(30, 30, 30, 0.6);
|
290 |
+
border: 0;
|
291 |
+
border-radius: 0;
|
292 |
+
cursor: pointer;
|
293 |
+
display: inline-block;
|
294 |
+
height: 44px;
|
295 |
+
margin: 0;
|
296 |
+
outline: none;
|
297 |
+
padding: 10px;
|
298 |
+
transition: color .2s;
|
299 |
+
vertical-align: top;
|
300 |
+
width: 44px; }
|
301 |
+
|
302 |
+
.fancybox-button,
|
303 |
+
.fancybox-button:visited,
|
304 |
+
.fancybox-button:link {
|
305 |
+
color: #ccc; }
|
306 |
+
|
307 |
+
.fancybox-button:focus,
|
308 |
+
.fancybox-button:hover {
|
309 |
+
color: #fff; }
|
310 |
+
|
311 |
+
.fancybox-button.disabled,
|
312 |
+
.fancybox-button.disabled:hover,
|
313 |
+
.fancybox-button[disabled],
|
314 |
+
.fancybox-button[disabled]:hover {
|
315 |
+
color: #888;
|
316 |
+
cursor: default; }
|
317 |
+
|
318 |
+
.fancybox-button svg {
|
319 |
+
display: block;
|
320 |
+
overflow: visible;
|
321 |
+
position: relative;
|
322 |
+
shape-rendering: geometricPrecision; }
|
323 |
+
|
324 |
+
.fancybox-button svg path {
|
325 |
+
fill: transparent;
|
326 |
+
stroke: currentColor;
|
327 |
+
stroke-linejoin: round;
|
328 |
+
stroke-width: 3; }
|
329 |
+
|
330 |
+
.fancybox-button--play svg path:nth-child(2) {
|
331 |
+
display: none; }
|
332 |
+
|
333 |
+
.fancybox-button--pause svg path:nth-child(1) {
|
334 |
+
display: none; }
|
335 |
+
|
336 |
+
.fancybox-button--play svg path,
|
337 |
+
.fancybox-button--share svg path,
|
338 |
+
.fancybox-button--thumbs svg path {
|
339 |
+
fill: currentColor; }
|
340 |
+
|
341 |
+
.fancybox-button--share svg path {
|
342 |
+
stroke-width: 1; }
|
343 |
+
|
344 |
+
/* Navigation arrows */
|
345 |
+
.fancybox-navigation .fancybox-button {
|
346 |
+
height: 38px;
|
347 |
+
opacity: 0;
|
348 |
+
padding: 6px;
|
349 |
+
position: absolute;
|
350 |
+
top: 50%;
|
351 |
+
width: 38px; }
|
352 |
+
|
353 |
+
.fancybox-show-nav .fancybox-navigation .fancybox-button {
|
354 |
+
transition: opacity .25s, visibility 0s, color .25s; }
|
355 |
+
|
356 |
+
.fancybox-navigation .fancybox-button::after {
|
357 |
+
content: '';
|
358 |
+
left: -25px;
|
359 |
+
padding: 50px;
|
360 |
+
position: absolute;
|
361 |
+
top: -25px; }
|
362 |
+
|
363 |
+
.fancybox-navigation .fancybox-button--arrow_left {
|
364 |
+
left: 6px; }
|
365 |
+
|
366 |
+
.fancybox-navigation .fancybox-button--arrow_right {
|
367 |
+
right: 6px; }
|
368 |
+
|
369 |
+
/* Close button on the top right corner of html content */
|
370 |
+
.fancybox-close-small {
|
371 |
+
background: transparent;
|
372 |
+
border: 0;
|
373 |
+
border-radius: 0;
|
374 |
+
color: #555;
|
375 |
+
cursor: pointer;
|
376 |
+
height: 44px;
|
377 |
+
margin: 0;
|
378 |
+
padding: 6px;
|
379 |
+
position: absolute;
|
380 |
+
right: 0;
|
381 |
+
top: 0;
|
382 |
+
width: 44px;
|
383 |
+
z-index: 10; }
|
384 |
+
|
385 |
+
.fancybox-close-small svg {
|
386 |
+
fill: transparent;
|
387 |
+
opacity: .8;
|
388 |
+
stroke: currentColor;
|
389 |
+
stroke-width: 1.5;
|
390 |
+
transition: stroke .1s; }
|
391 |
+
|
392 |
+
.fancybox-close-small:focus {
|
393 |
+
outline: none; }
|
394 |
+
|
395 |
+
.fancybox-close-small:hover svg {
|
396 |
+
opacity: 1; }
|
397 |
+
|
398 |
+
.fancybox-slide--image .fancybox-close-small,
|
399 |
+
.fancybox-slide--video .fancybox-close-small,
|
400 |
+
.fancybox-slide--iframe .fancybox-close-small {
|
401 |
+
color: #ccc;
|
402 |
+
padding: 5px;
|
403 |
+
right: -12px;
|
404 |
+
top: -44px; }
|
405 |
+
|
406 |
+
.fancybox-slide--image .fancybox-close-small:hover svg,
|
407 |
+
.fancybox-slide--video .fancybox-close-small:hover svg,
|
408 |
+
.fancybox-slide--iframe .fancybox-close-small:hover svg {
|
409 |
+
background: transparent;
|
410 |
+
color: #fff; }
|
411 |
+
|
412 |
+
.fancybox-is-scaling .fancybox-close-small,
|
413 |
+
.fancybox-is-zoomable.fancybox-can-drag .fancybox-close-small {
|
414 |
+
display: none; }
|
415 |
+
|
416 |
+
/* Caption */
|
417 |
+
.fancybox-caption {
|
418 |
+
bottom: 0;
|
419 |
+
color: #fff;
|
420 |
+
font-size: 14px;
|
421 |
+
font-weight: 400;
|
422 |
+
left: 0;
|
423 |
+
line-height: 1.5;
|
424 |
+
padding: 25px 44px 25px 44px;
|
425 |
+
right: 0; }
|
426 |
+
|
427 |
+
.fancybox-caption::before {
|
428 |
+
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAEtCAQAAABjBcL7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHRJREFUKM+Vk8EOgDAIQ0vj/3+xBw8qIZZueFnIKC90MCAI8DlrkHGeqqGIU6lVigrBtpCWqeRWoHDNqs0F7VNVBVxmHRlvoVqjaYkdnDIaivH2HqZ5+oZj3JUzWB+cOz4G48Bg+tsJ/tqu4dLC/4Xb+0GcF5BwBC0AA53qAAAAAElFTkSuQmCC);
|
429 |
+
background-repeat: repeat-x;
|
430 |
+
background-size: contain;
|
431 |
+
bottom: 0;
|
432 |
+
content: '';
|
433 |
+
display: block;
|
434 |
+
left: 0;
|
435 |
+
pointer-events: none;
|
436 |
+
position: absolute;
|
437 |
+
right: 0;
|
438 |
+
top: -25px;
|
439 |
+
z-index: -1; }
|
440 |
+
|
441 |
+
.fancybox-caption::after {
|
442 |
+
border-bottom: 1px solid rgba(255, 255, 255, 0.3);
|
443 |
+
content: '';
|
444 |
+
display: block;
|
445 |
+
left: 44px;
|
446 |
+
position: absolute;
|
447 |
+
right: 44px;
|
448 |
+
top: 0; }
|
449 |
+
|
450 |
+
.fancybox-caption a,
|
451 |
+
.fancybox-caption a:link,
|
452 |
+
.fancybox-caption a:visited {
|
453 |
+
color: #ccc;
|
454 |
+
text-decoration: none; }
|
455 |
+
|
456 |
+
.fancybox-caption a:hover {
|
457 |
+
color: #fff;
|
458 |
+
text-decoration: underline; }
|
459 |
+
|
460 |
+
/* Loading indicator */
|
461 |
+
.fancybox-loading {
|
462 |
+
-webkit-animation: fancybox-rotate .8s infinite linear;
|
463 |
+
animation: fancybox-rotate .8s infinite linear;
|
464 |
+
background: transparent;
|
465 |
+
border: 6px solid rgba(100, 100, 100, 0.5);
|
466 |
+
border-radius: 100%;
|
467 |
+
border-top-color: #fff;
|
468 |
+
height: 60px;
|
469 |
+
left: 50%;
|
470 |
+
margin: -30px 0 0 -30px;
|
471 |
+
opacity: .6;
|
472 |
+
padding: 0;
|
473 |
+
position: absolute;
|
474 |
+
top: 50%;
|
475 |
+
width: 60px;
|
476 |
+
z-index: 99999; }
|
477 |
+
|
478 |
+
@-webkit-keyframes fancybox-rotate {
|
479 |
+
from {
|
480 |
+
-webkit-transform: rotate(0deg);
|
481 |
+
transform: rotate(0deg); }
|
482 |
+
to {
|
483 |
+
-webkit-transform: rotate(359deg);
|
484 |
+
transform: rotate(359deg); } }
|
485 |
+
|
486 |
+
@keyframes fancybox-rotate {
|
487 |
+
from {
|
488 |
+
-webkit-transform: rotate(0deg);
|
489 |
+
transform: rotate(0deg); }
|
490 |
+
to {
|
491 |
+
-webkit-transform: rotate(359deg);
|
492 |
+
transform: rotate(359deg); } }
|
493 |
+
|
494 |
+
/* Transition effects */
|
495 |
+
.fancybox-animated {
|
496 |
+
transition-timing-function: cubic-bezier(0, 0, 0.25, 1); }
|
497 |
+
|
498 |
+
/* transitionEffect: slide */
|
499 |
+
.fancybox-fx-slide.fancybox-slide--previous {
|
500 |
+
opacity: 0;
|
501 |
+
-webkit-transform: translate3d(-100%, 0, 0);
|
502 |
+
transform: translate3d(-100%, 0, 0); }
|
503 |
+
|
504 |
+
.fancybox-fx-slide.fancybox-slide--next {
|
505 |
+
opacity: 0;
|
506 |
+
-webkit-transform: translate3d(100%, 0, 0);
|
507 |
+
transform: translate3d(100%, 0, 0); }
|
508 |
+
|
509 |
+
.fancybox-fx-slide.fancybox-slide--current {
|
510 |
+
opacity: 1;
|
511 |
+
-webkit-transform: translate3d(0, 0, 0);
|
512 |
+
transform: translate3d(0, 0, 0); }
|
513 |
+
|
514 |
+
/* transitionEffect: fade */
|
515 |
+
.fancybox-fx-fade.fancybox-slide--previous,
|
516 |
+
.fancybox-fx-fade.fancybox-slide--next {
|
517 |
+
opacity: 0;
|
518 |
+
transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); }
|
519 |
+
|
520 |
+
.fancybox-fx-fade.fancybox-slide--current {
|
521 |
+
opacity: 1; }
|
522 |
+
|
523 |
+
/* transitionEffect: zoom-in-out */
|
524 |
+
.fancybox-fx-zoom-in-out.fancybox-slide--previous {
|
525 |
+
opacity: 0;
|
526 |
+
-webkit-transform: scale3d(1.5, 1.5, 1.5);
|
527 |
+
transform: scale3d(1.5, 1.5, 1.5); }
|
528 |
+
|
529 |
+
.fancybox-fx-zoom-in-out.fancybox-slide--next {
|
530 |
+
opacity: 0;
|
531 |
+
-webkit-transform: scale3d(0.5, 0.5, 0.5);
|
532 |
+
transform: scale3d(0.5, 0.5, 0.5); }
|
533 |
+
|
534 |
+
.fancybox-fx-zoom-in-out.fancybox-slide--current {
|
535 |
+
opacity: 1;
|
536 |
+
-webkit-transform: scale3d(1, 1, 1);
|
537 |
+
transform: scale3d(1, 1, 1); }
|
538 |
+
|
539 |
+
/* transitionEffect: rotate */
|
540 |
+
.fancybox-fx-rotate.fancybox-slide--previous {
|
541 |
+
opacity: 0;
|
542 |
+
-webkit-transform: rotate(-360deg);
|
543 |
+
-ms-transform: rotate(-360deg);
|
544 |
+
transform: rotate(-360deg); }
|
545 |
+
|
546 |
+
.fancybox-fx-rotate.fancybox-slide--next {
|
547 |
+
opacity: 0;
|
548 |
+
-webkit-transform: rotate(360deg);
|
549 |
+
-ms-transform: rotate(360deg);
|
550 |
+
transform: rotate(360deg); }
|
551 |
+
|
552 |
+
.fancybox-fx-rotate.fancybox-slide--current {
|
553 |
+
opacity: 1;
|
554 |
+
-webkit-transform: rotate(0deg);
|
555 |
+
-ms-transform: rotate(0deg);
|
556 |
+
transform: rotate(0deg); }
|
557 |
+
|
558 |
+
/* transitionEffect: circular */
|
559 |
+
.fancybox-fx-circular.fancybox-slide--previous {
|
560 |
+
opacity: 0;
|
561 |
+
-webkit-transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0);
|
562 |
+
transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0); }
|
563 |
+
|
564 |
+
.fancybox-fx-circular.fancybox-slide--next {
|
565 |
+
opacity: 0;
|
566 |
+
-webkit-transform: scale3d(0, 0, 0) translate3d(100%, 0, 0);
|
567 |
+
transform: scale3d(0, 0, 0) translate3d(100%, 0, 0); }
|
568 |
+
|
569 |
+
.fancybox-fx-circular.fancybox-slide--current {
|
570 |
+
opacity: 1;
|
571 |
+
-webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
|
572 |
+
transform: scale3d(1, 1, 1) translate3d(0, 0, 0); }
|
573 |
+
|
574 |
+
/* transitionEffect: tube */
|
575 |
+
.fancybox-fx-tube.fancybox-slide--previous {
|
576 |
+
-webkit-transform: translate3d(-100%, 0, 0) scale(0.1) skew(-10deg);
|
577 |
+
transform: translate3d(-100%, 0, 0) scale(0.1) skew(-10deg); }
|
578 |
+
|
579 |
+
.fancybox-fx-tube.fancybox-slide--next {
|
580 |
+
-webkit-transform: translate3d(100%, 0, 0) scale(0.1) skew(10deg);
|
581 |
+
transform: translate3d(100%, 0, 0) scale(0.1) skew(10deg); }
|
582 |
+
|
583 |
+
.fancybox-fx-tube.fancybox-slide--current {
|
584 |
+
-webkit-transform: translate3d(0, 0, 0) scale(1);
|
585 |
+
transform: translate3d(0, 0, 0) scale(1); }
|
586 |
+
|
587 |
+
/* Share */
|
588 |
+
.fancybox-share {
|
589 |
+
background: #f4f4f4;
|
590 |
+
border-radius: 3px;
|
591 |
+
max-width: 90%;
|
592 |
+
padding: 30px;
|
593 |
+
text-align: center; }
|
594 |
+
|
595 |
+
.fancybox-share h1 {
|
596 |
+
color: #222;
|
597 |
+
font-size: 35px;
|
598 |
+
font-weight: 700;
|
599 |
+
margin: 0 0 20px 0; }
|
600 |
+
|
601 |
+
.fancybox-share p {
|
602 |
+
margin: 0;
|
603 |
+
padding: 0; }
|
604 |
+
|
605 |
+
.fancybox-share__button {
|
606 |
+
border: 0;
|
607 |
+
border-radius: 3px;
|
608 |
+
display: inline-block;
|
609 |
+
font-size: 14px;
|
610 |
+
font-weight: 700;
|
611 |
+
line-height: 40px;
|
612 |
+
margin: 0 5px 10px 5px;
|
613 |
+
min-width: 130px;
|
614 |
+
padding: 0 15px;
|
615 |
+
text-decoration: none;
|
616 |
+
transition: all .2s;
|
617 |
+
-webkit-user-select: none;
|
618 |
+
-moz-user-select: none;
|
619 |
+
-ms-user-select: none;
|
620 |
+
user-select: none;
|
621 |
+
white-space: nowrap; }
|
622 |
+
|
623 |
+
.fancybox-share__button:visited,
|
624 |
+
.fancybox-share__button:link {
|
625 |
+
color: #fff; }
|
626 |
+
|
627 |
+
.fancybox-share__button:hover {
|
628 |
+
text-decoration: none; }
|
629 |
+
|
630 |
+
.fancybox-share__button--fb {
|
631 |
+
background: #3b5998; }
|
632 |
+
|
633 |
+
.fancybox-share__button--fb:hover {
|
634 |
+
background: #344e86; }
|
635 |
+
|
636 |
+
.fancybox-share__button--pt {
|
637 |
+
background: #bd081d; }
|
638 |
+
|
639 |
+
.fancybox-share__button--pt:hover {
|
640 |
+
background: #aa0719; }
|
641 |
+
|
642 |
+
.fancybox-share__button--tw {
|
643 |
+
background: #1da1f2; }
|
644 |
+
|
645 |
+
.fancybox-share__button--tw:hover {
|
646 |
+
background: #0d95e8; }
|
647 |
+
|
648 |
+
.fancybox-share__button svg {
|
649 |
+
height: 25px;
|
650 |
+
margin-right: 7px;
|
651 |
+
position: relative;
|
652 |
+
top: -1px;
|
653 |
+
vertical-align: middle;
|
654 |
+
width: 25px; }
|
655 |
+
|
656 |
+
.fancybox-share__button svg path {
|
657 |
+
fill: #fff; }
|
658 |
+
|
659 |
+
.fancybox-share__input {
|
660 |
+
background: transparent;
|
661 |
+
border: 0;
|
662 |
+
border-bottom: 1px solid #d7d7d7;
|
663 |
+
border-radius: 0;
|
664 |
+
color: #5d5b5b;
|
665 |
+
font-size: 14px;
|
666 |
+
margin: 10px 0 0 0;
|
667 |
+
outline: none;
|
668 |
+
padding: 10px 15px;
|
669 |
+
width: 100%; }
|
670 |
+
|
671 |
+
/* Thumbs */
|
672 |
+
.fancybox-thumbs {
|
673 |
+
background: #fff;
|
674 |
+
bottom: 0;
|
675 |
+
display: none;
|
676 |
+
margin: 0;
|
677 |
+
-webkit-overflow-scrolling: touch;
|
678 |
+
-ms-overflow-style: -ms-autohiding-scrollbar;
|
679 |
+
padding: 2px 2px 4px 2px;
|
680 |
+
position: absolute;
|
681 |
+
right: 0;
|
682 |
+
-webkit-tap-highlight-color: transparent;
|
683 |
+
top: 0;
|
684 |
+
width: 212px;
|
685 |
+
z-index: 99995; }
|
686 |
+
|
687 |
+
.fancybox-thumbs-x {
|
688 |
+
overflow-x: auto;
|
689 |
+
overflow-y: hidden; }
|
690 |
+
|
691 |
+
.fancybox-show-thumbs .fancybox-thumbs {
|
692 |
+
display: block; }
|
693 |
+
|
694 |
+
.fancybox-show-thumbs .fancybox-inner {
|
695 |
+
right: 212px; }
|
696 |
+
|
697 |
+
.fancybox-thumbs > ul {
|
698 |
+
font-size: 0;
|
699 |
+
height: 100%;
|
700 |
+
list-style: none;
|
701 |
+
margin: 0;
|
702 |
+
overflow-x: hidden;
|
703 |
+
overflow-y: auto;
|
704 |
+
padding: 0;
|
705 |
+
position: absolute;
|
706 |
+
position: relative;
|
707 |
+
white-space: nowrap;
|
708 |
+
width: 100%; }
|
709 |
+
|
710 |
+
.fancybox-thumbs-x > ul {
|
711 |
+
overflow: hidden; }
|
712 |
+
|
713 |
+
.fancybox-thumbs-y > ul::-webkit-scrollbar {
|
714 |
+
width: 7px; }
|
715 |
+
|
716 |
+
.fancybox-thumbs-y > ul::-webkit-scrollbar-track {
|
717 |
+
background: #fff;
|
718 |
+
border-radius: 10px;
|
719 |
+
box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); }
|
720 |
+
|
721 |
+
.fancybox-thumbs-y > ul::-webkit-scrollbar-thumb {
|
722 |
+
background: #2a2a2a;
|
723 |
+
border-radius: 10px; }
|
724 |
+
|
725 |
+
.fancybox-thumbs > ul > li {
|
726 |
+
-webkit-backface-visibility: hidden;
|
727 |
+
backface-visibility: hidden;
|
728 |
+
cursor: pointer;
|
729 |
+
float: left;
|
730 |
+
height: 75px;
|
731 |
+
margin: 2px;
|
732 |
+
max-height: calc(100% - 8px);
|
733 |
+
max-width: calc(50% - 4px);
|
734 |
+
outline: none;
|
735 |
+
overflow: hidden;
|
736 |
+
padding: 0;
|
737 |
+
position: relative;
|
738 |
+
-webkit-tap-highlight-color: transparent;
|
739 |
+
width: 100px; }
|
740 |
+
|
741 |
+
.fancybox-thumbs-loading {
|
742 |
+
background: rgba(0, 0, 0, 0.1); }
|
743 |
+
|
744 |
+
.fancybox-thumbs > ul > li {
|
745 |
+
background-position: center center;
|
746 |
+
background-repeat: no-repeat;
|
747 |
+
background-size: cover; }
|
748 |
+
|
749 |
+
.fancybox-thumbs > ul > li:before {
|
750 |
+
border: 4px solid #4ea7f9;
|
751 |
+
bottom: 0;
|
752 |
+
content: '';
|
753 |
+
left: 0;
|
754 |
+
opacity: 0;
|
755 |
+
position: absolute;
|
756 |
+
right: 0;
|
757 |
+
top: 0;
|
758 |
+
transition: all 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
759 |
+
z-index: 99991; }
|
760 |
+
|
761 |
+
.fancybox-thumbs .fancybox-thumbs-active:before {
|
762 |
+
opacity: 1; }
|
763 |
+
|
764 |
+
/* Styling for Small-Screen Devices */
|
765 |
+
@media all and (max-width: 800px) {
|
766 |
+
.fancybox-thumbs {
|
767 |
+
width: 110px; }
|
768 |
+
.fancybox-show-thumbs .fancybox-inner {
|
769 |
+
right: 110px; }
|
770 |
+
.fancybox-thumbs > ul > li {
|
771 |
+
max-width: calc(100% - 10px); } }
|
772 |
+
|
773 |
+
|
774 |
+
/* Customizations */
|
775 |
+
.fancybox-content {
|
776 |
+
overflow: hidden;
|
777 |
+
}
|
778 |
+
|
779 |
+
.fancybox-content.flowplayer {
|
780 |
+
padding: 0;
|
781 |
+
background-size:contain;
|
782 |
+
background-repeat:no-repeat;
|
783 |
+
background-position:center center;
|
784 |
+
}
|
785 |
+
|
786 |
+
/* Make sure FV Player respects fancybox fullscreen mode */
|
787 |
+
.fancybox-is-fullscreen .flowplayer {
|
788 |
+
max-width: 9999px !important;
|
789 |
+
max-height: 9999px !important;
|
790 |
+
}
|
791 |
+
.fancybox-is-fullscreen .flowplayer .fp-fullscreen:before {
|
792 |
+
content: "\e016"; }
|
793 |
+
.fancybox-is-fullscreen .flowplayer.fp-outlined .fp-fullscreen:before, .fancybox-is-fullscreen .flowplayer.fp-minimal .fp-fullscreen:before {
|
794 |
+
content: "\e216"; }
|
795 |
+
.fancybox-is-fullscreen .flowplayer.fp-edgy .fp-fullscreen:before {
|
796 |
+
content: "\e116"; }
|
797 |
+
.fancybox-is-fullscreen .flowplayer.fp-edgy.fp-outlined .fp-fullscreen:before, .fancybox-is-fullscreen .flowplayer.fp-edgy.fp-minimal .fp-fullscreen:before {
|
798 |
+
content: "\e316"; }
|
799 |
+
|
800 |
+
.fv-player-fancybox-play-icon {
|
801 |
+
position: absolute;
|
802 |
+
left: 0;
|
803 |
+
right: 0;
|
804 |
+
top: 0;
|
805 |
+
bottom: 0;
|
806 |
+
z-index: 99999;
|
807 |
+
font-size: 40px;
|
808 |
+
color: white;
|
809 |
+
text-align: center;
|
810 |
+
text-shadow: 0px 0px 7px #000;
|
811 |
+
}
|
812 |
+
|
813 |
+
body.fancybox-active #wpadminbar, body.fancybox-active .nc_wrapper.bottom { display: none !important }
|
css/flowplayer-beta.css
CHANGED
@@ -1217,14 +1217,12 @@
|
|
1217 |
|
1218 |
@media (max-width: 40em){
|
1219 |
.flowplayer .fp-help p{font-size:9px;}
|
1220 |
-
.flowplayer .fp-logo{max-width: 130px;}
|
1221 |
}
|
1222 |
@media (max-width: 30em) {
|
1223 |
.flowplayer .fv_player_popup {width:99%;font-size:14px;top:0;}
|
1224 |
.flowplayer.is-fv-narrow .fv_player_popup{font-size:0.8em}
|
1225 |
}
|
1226 |
@media (max-width: 22.5em) {
|
1227 |
-
.flowplayer .fp-logo{max-width: 90px;}
|
1228 |
.flowplayer.is-fv-narrow .mailchimp-form{padding:10px 1.5%}
|
1229 |
.flowplayer.is-fv-narrow .fv_player_popup{font-size:0.7em}
|
1230 |
}
|
@@ -1254,7 +1252,9 @@
|
|
1254 |
.flowplayer video.fp-engine { visibility:visible; }
|
1255 |
.flowplayer .fp-engine { max-width:100%; }
|
1256 |
.flowplayer.is-fullscreen .fp-logo{z-index:2147483647;}
|
1257 |
-
.flowplayer .fp-logo{
|
|
|
|
|
1258 |
|
1259 |
/* Share bar, todo: check! */
|
1260 |
.flowplayer .fp-embed-code{display:none;}
|
@@ -1550,18 +1550,7 @@
|
|
1550 |
.flowplayer.alignleft { margin-right: 10px; margin-bottom: 10px; }
|
1551 |
.flowplayer.alignright { margin-left: 10px; margin-bottom: 10px; }
|
1552 |
|
1553 |
-
|
1554 |
-
|
1555 |
-
/* No Controlar, todo: check! */
|
1556 |
-
.flowplayer.no-controlbar .fp-controls a,.flowplayer.no-controlbar .fp-controls .fp-volume,.flowplayer.no-controlbar .fp-time {display:none;}
|
1557 |
-
.flowplayer.is-mouseover.no-controlbar .fp-controls, .flowplayer.fixed-controls.no-controlbar .fp-controls {height:auto;}
|
1558 |
-
.flowplayer.is-mouseover.no-controlbar .fp-timeline {height:4px;top:0;}
|
1559 |
-
.has-menu.no-brand.flowplayer.no-controlbar .fp-timeline {margin:0;}
|
1560 |
-
.flowplayer.is-mouseover.no-controlbar .fp-controls, .flowplayer.is-mouseover.no-controlbar .fp-mute, .flowplayer.is-mouseover.no-controlbar .fp-title {height:0;}
|
1561 |
-
.flowplayer.no-controlbar .fp-buffer, .flowplayer.no-controlbar .fp-progress, .flowplayer.no-controlbar .fp-timeline { cursor: auto; }
|
1562 |
-
.flowplayer.no-controlbar .fp-timeline:hover+.fp-timeline-tooltip { display: none; }
|
1563 |
-
|
1564 |
-
|
1565 |
|
1566 |
/* Caption, todo: check!*/
|
1567 |
p.fp-caption { text-align: center;max-width: 100%; }
|
@@ -1735,9 +1724,12 @@ article .entry-content .fvfp_admin_error p { line-height: 18px }
|
|
1735 |
|
1736 |
|
1737 |
|
1738 |
-
/* Notices
|
1739 |
-
.fvfp-notices { position: absolute;top:
|
|
|
|
|
1740 |
.flowplayer.is-splash .fvfp-notices { display: block }
|
|
|
1741 |
|
1742 |
|
1743 |
/* Disable selection, todo: check! */
|
1217 |
|
1218 |
@media (max-width: 40em){
|
1219 |
.flowplayer .fp-help p{font-size:9px;}
|
|
|
1220 |
}
|
1221 |
@media (max-width: 30em) {
|
1222 |
.flowplayer .fv_player_popup {width:99%;font-size:14px;top:0;}
|
1223 |
.flowplayer.is-fv-narrow .fv_player_popup{font-size:0.8em}
|
1224 |
}
|
1225 |
@media (max-width: 22.5em) {
|
|
|
1226 |
.flowplayer.is-fv-narrow .mailchimp-form{padding:10px 1.5%}
|
1227 |
.flowplayer.is-fv-narrow .fv_player_popup{font-size:0.7em}
|
1228 |
}
|
1252 |
.flowplayer video.fp-engine { visibility:visible; }
|
1253 |
.flowplayer .fp-engine { max-width:100%; }
|
1254 |
.flowplayer.is-fullscreen .fp-logo{z-index:2147483647;}
|
1255 |
+
.flowplayer .fp-logo {max-width:33%;-webkit-tap-highlight-color: rgba(0,0,0,0);}
|
1256 |
+
.flowplayer .fp-logo img {box-shadow:none}
|
1257 |
+
.flowplayer.fixed-controls .fp-logo {bottom: 15px}
|
1258 |
|
1259 |
/* Share bar, todo: check! */
|
1260 |
.flowplayer .fp-embed-code{display:none;}
|
1550 |
.flowplayer.alignleft { margin-right: 10px; margin-bottom: 10px; }
|
1551 |
.flowplayer.alignright { margin-left: 10px; margin-bottom: 10px; }
|
1552 |
|
1553 |
+
.flowplayer.no-controlbar .fp-controls {display:none}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1554 |
|
1555 |
/* Caption, todo: check!*/
|
1556 |
p.fp-caption { text-align: center;max-width: 100%; }
|
1724 |
|
1725 |
|
1726 |
|
1727 |
+
/* Notices */
|
1728 |
+
.fvfp-notices { position: absolute;top:12%;z-index:20;text-align:center;width:100%;color:#fff;text-shadow: 0 0 10px #000; opacity: 1; pointer-events: none}
|
1729 |
+
.fvfp-notices a { pointer-events: auto; color:#fff; }
|
1730 |
+
.flowplayer .fvfp-notice-content a:hover { color:#eee; }
|
1731 |
.flowplayer.is-splash .fvfp-notices { display: block }
|
1732 |
+
.fv-player-reload { font-size: 5em; display: block }
|
1733 |
|
1734 |
|
1735 |
/* Disable selection, todo: check! */
|
css/flowplayer.css
CHANGED
@@ -325,7 +325,6 @@
|
|
325 |
}
|
326 |
@media (max-width: 40em){
|
327 |
.flowplayer .fp-help p{font-size:9px;}
|
328 |
-
.flowplayer .fp-logo{max-width: 130px;}
|
329 |
.flowplayer .fp-subtitle{line-height:14px !important}
|
330 |
.flowplayer .fp-subtitle .fp-subtitle-line{font-size:14px !important;line-height:20px !important}
|
331 |
}
|
@@ -336,7 +335,6 @@
|
|
336 |
.flowplayer.is-fv-narrow .fv_player_popup{font-size:0.8em}
|
337 |
}
|
338 |
@media (max-width: 22.5em) {
|
339 |
-
.flowplayer .fp-logo{max-width: 90px;}
|
340 |
.flowplayer.is-fv-narrow .mailchimp-form{padding:10px 1.5%}
|
341 |
.flowplayer.is-fv-narrow .fv_player_popup{font-size:0.7em}
|
342 |
}
|
@@ -405,6 +403,8 @@
|
|
405 |
.flowplayer .fvp-share-bar textarea{width:400px;min-height:130px;font-family: "Lucida Console", Monaco, monospace; color:#777; white-space:nowrap; resize:none;overflow:hidden;border:0;outline:0;background-color:transparent;color:#ccc; border: 1px solid #888;}
|
406 |
.flowplayer.is-embedding .fp-embed,.flowplayer.is-embedding .fvp-share-bar{display:block;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
|
407 |
|
|
|
|
|
408 |
.flowplayer.is-fullscreen .fp-logo{z-index:2147483647;}
|
409 |
|
410 |
.flowplayer video.fp-engine {
|
325 |
}
|
326 |
@media (max-width: 40em){
|
327 |
.flowplayer .fp-help p{font-size:9px;}
|
|
|
328 |
.flowplayer .fp-subtitle{line-height:14px !important}
|
329 |
.flowplayer .fp-subtitle .fp-subtitle-line{font-size:14px !important;line-height:20px !important}
|
330 |
}
|
335 |
.flowplayer.is-fv-narrow .fv_player_popup{font-size:0.8em}
|
336 |
}
|
337 |
@media (max-width: 22.5em) {
|
|
|
338 |
.flowplayer.is-fv-narrow .mailchimp-form{padding:10px 1.5%}
|
339 |
.flowplayer.is-fv-narrow .fv_player_popup{font-size:0.7em}
|
340 |
}
|
403 |
.flowplayer .fvp-share-bar textarea{width:400px;min-height:130px;font-family: "Lucida Console", Monaco, monospace; color:#777; white-space:nowrap; resize:none;overflow:hidden;border:0;outline:0;background-color:transparent;color:#ccc; border: 1px solid #888;}
|
404 |
.flowplayer.is-embedding .fp-embed,.flowplayer.is-embedding .fvp-share-bar{display:block;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
|
405 |
|
406 |
+
.flowplayer .fp-logo { max-width:33%; -webkit-tap-highlight-color: rgba(0,0,0,0); }
|
407 |
+
.flowplayer .fp-logo img {box-shadow:none}
|
408 |
.flowplayer.is-fullscreen .fp-logo{z-index:2147483647;}
|
409 |
|
410 |
.flowplayer video.fp-engine {
|
css/license.css
CHANGED
@@ -76,8 +76,6 @@ a.red-button {
|
|
76 |
|
77 |
#wpfp_options table { width: 100% }
|
78 |
#wpfp_options table td.first { width: 250px }
|
79 |
-
#wpfp_options #fv_player_pro table td.first { width: 278px }
|
80 |
-
#wpfp_options #fv_flowplayer_integrations table td.first { width: 310px }
|
81 |
#wpfp_options #fv_flowplayer_integrations table tr > td:first-child { padding-top: 4px; vertical-align: top; }
|
82 |
#wpfp_options table.flowplayer-settings { width: 29%; }
|
83 |
|
76 |
|
77 |
#wpfp_options table { width: 100% }
|
78 |
#wpfp_options table td.first { width: 250px }
|
|
|
|
|
79 |
#wpfp_options #fv_flowplayer_integrations table tr > td:first-child { padding-top: 4px; vertical-align: top; }
|
80 |
#wpfp_options table.flowplayer-settings { width: 29%; }
|
81 |
|
flowplayer-beta/fv-flowplayer.min.js
CHANGED
@@ -29,6 +29,8 @@ if( typeof(fv_flowplayer_conf) != "undefined" ) {
|
|
29 |
|
30 |
flowplayer.conf.hlsjs = {
|
31 |
startLevel: -1,
|
|
|
|
|
32 |
//capLevelToPlayerSize: true, // great, but it has bugs
|
33 |
};
|
34 |
|
@@ -593,9 +595,9 @@ function fv_player_preload() {
|
|
593 |
|
594 |
//sets height for embedded players
|
595 |
if( window.self != window.top && !location.href.match(/fv_player_preview/) ){
|
596 |
-
jQuery('.flowplayer').height(jQuery(window).height());
|
597 |
jQuery(window.self).resize(function(){
|
598 |
-
jQuery('.flowplayer').height(jQuery(window.self).height())
|
599 |
})
|
600 |
}
|
601 |
|
@@ -776,9 +778,10 @@ flowplayer( function(api,root) {
|
|
776 |
|
777 |
jQuery('.fvfp_admin_error', root).remove(); // v6: admin error removal?
|
778 |
|
779 |
-
|
780 |
-
|
781 |
-
|
|
|
782 |
|
783 |
jQuery('.fp-header',root).prepend( jQuery('.fvp-share-bar',root) );
|
784 |
|
@@ -811,7 +814,7 @@ flowplayer( function(api,root) {
|
|
811 |
});
|
812 |
}
|
813 |
|
814 |
-
jQuery(document).on('contextmenu', '.flowplayer
|
815 |
e.preventDefault();
|
816 |
});
|
817 |
|
@@ -932,47 +935,6 @@ jQuery(document).on('blur','.fv_player_popup input[type=text], .fv_player_popup
|
|
932 |
|
933 |
|
934 |
|
935 |
-
/*
|
936 |
-
* Colorbox compatibility
|
937 |
-
*/
|
938 |
-
if( typeof(flowplayer.conf.cbox_compatibility) != "undefined" && flowplayer.conf.cbox_compatibility ) {
|
939 |
-
jQuery(document).bind('cbox_complete', function() {
|
940 |
-
if( jQuery('.flowplayer', jQuery('#cboxLoadedContent') ).length > 0 ) {
|
941 |
-
if( jQuery('.flowplayer', jQuery('#cboxLoadedContent') ).attr('id').length == 0 ) {
|
942 |
-
return;
|
943 |
-
}
|
944 |
-
|
945 |
-
var use_this_api = false;
|
946 |
-
var recovery;
|
947 |
-
var recovery_id = Math.floor((Math.random() * 100) + 1);
|
948 |
-
jQuery('[id='+jQuery('.flowplayer', jQuery('#cboxLoadedContent') ).attr('id')+']').each( function() {
|
949 |
-
if( jQuery(this).data('flowplayer') ) {
|
950 |
-
use_this_api = jQuery(this).data('flowplayer');
|
951 |
-
recovery = jQuery(this);
|
952 |
-
jQuery(this).before('<span id="fv_flowplayer_recovery-'+recovery_id+'"></span>');
|
953 |
-
}
|
954 |
-
} );
|
955 |
-
|
956 |
-
jQuery('.flowplayer', jQuery('#cboxLoadedContent') ).replaceWith(recovery);
|
957 |
-
jQuery('.flowplayer', jQuery('#cboxLoadedContent') ).data('fv-cloned', recovery_id);
|
958 |
-
}
|
959 |
-
|
960 |
-
}).bind('cbox_cleanup', function() {
|
961 |
-
if( jQuery('.flowplayer', jQuery('#cboxLoadedContent') ).length > 0 ) {
|
962 |
-
if( jQuery('.flowplayer', jQuery('#cboxLoadedContent') ).data('fv-cloned') ){
|
963 |
-
var api = jQuery('.flowplayer', jQuery('#cboxLoadedContent') ).data('flowplayer');
|
964 |
-
api.stop().unload();
|
965 |
-
jQuery('#fv_flowplayer_recovery-'+jQuery('.flowplayer', jQuery('#cboxLoadedContent') ).data('fv-cloned') ).replaceWith( jQuery('.flowplayer', jQuery('#cboxLoadedContent')) );
|
966 |
-
}
|
967 |
-
|
968 |
-
}
|
969 |
-
|
970 |
-
});
|
971 |
-
}
|
972 |
-
|
973 |
-
|
974 |
-
|
975 |
-
|
976 |
/*
|
977 |
* Live stream errors
|
978 |
*/
|
@@ -1833,7 +1795,7 @@ function fv_player_notice(root, message, timeout) {
|
|
1833 |
var notices = jQuery('.fvfp-notices',root);
|
1834 |
if( !notices.length ) {
|
1835 |
notices = jQuery('<div class="fvfp-notices">');
|
1836 |
-
jQuery('.fp-
|
1837 |
}
|
1838 |
|
1839 |
var notice = jQuery('<div class="fvfp-notice-content">'+message+'</div></div>');
|
@@ -2001,6 +1963,8 @@ flowplayer.bean.on(document, "keydown.fp", function(e) {
|
|
2001 |
|
2002 |
if( flowplayer.conf.mobile_force_fullscreen && ( 'ontouchstart' in window ) && flowplayer.support.fvmobile ) {
|
2003 |
flowplayer(function(api, root) {
|
|
|
|
|
2004 |
if( flowplayer.support.iOS.iPad || flowplayer.support.iOS.iPhone && flowplayer.support.iOS.version >= 10 ) {
|
2005 |
api.bind('ready', function() {
|
2006 |
api.fullscreen();
|
@@ -2070,7 +2034,7 @@ flowplayer( function(api,root) {
|
|
2070 |
}
|
2071 |
quality_sort();
|
2072 |
} else if(api.engine.engineName == 'hlsjs-lite' ) {
|
2073 |
-
if( localStorage.FVPlayerHLSQuality ) {
|
2074 |
api.quality(localStorage.FVPlayerHLSQuality);
|
2075 |
root.one('progress', function() {
|
2076 |
setTimeout( function() {
|
@@ -2664,3 +2628,51 @@ flowplayer( function(api,root) {
|
|
2664 |
}
|
2665 |
|
2666 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
|
30 |
flowplayer.conf.hlsjs = {
|
31 |
startLevel: -1,
|
32 |
+
fragLoadingMaxRetry: 3,
|
33 |
+
levelLoadingMaxRetry: 3
|
34 |
//capLevelToPlayerSize: true, // great, but it has bugs
|
35 |
};
|
36 |
|
595 |
|
596 |
//sets height for embedded players
|
597 |
if( window.self != window.top && !location.href.match(/fv_player_preview/) ){
|
598 |
+
jQuery('.flowplayer.fp-is-embed').height(jQuery(window).height());
|
599 |
jQuery(window.self).resize(function(){
|
600 |
+
jQuery('.flowplayer.fp-is-embed').height(jQuery(window.self).height())
|
601 |
})
|
602 |
}
|
603 |
|
778 |
|
779 |
jQuery('.fvfp_admin_error', root).remove(); // v6: admin error removal?
|
780 |
|
781 |
+
root.find('.fp-logo, .fp-header').click( function(e) {
|
782 |
+
if (e.target !== this) return;
|
783 |
+
root.find('.fp-ui').click();
|
784 |
+
});
|
785 |
|
786 |
jQuery('.fp-header',root).prepend( jQuery('.fvp-share-bar',root) );
|
787 |
|
814 |
});
|
815 |
}
|
816 |
|
817 |
+
jQuery(document).on('contextmenu', '.flowplayer', function(e) {
|
818 |
e.preventDefault();
|
819 |
});
|
820 |
|
935 |
|
936 |
|
937 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
938 |
/*
|
939 |
* Live stream errors
|
940 |
*/
|
1795 |
var notices = jQuery('.fvfp-notices',root);
|
1796 |
if( !notices.length ) {
|
1797 |
notices = jQuery('<div class="fvfp-notices">');
|
1798 |
+
jQuery('.fp-player',root).append(notices);
|
1799 |
}
|
1800 |
|
1801 |
var notice = jQuery('<div class="fvfp-notice-content">'+message+'</div></div>');
|
1963 |
|
1964 |
if( flowplayer.conf.mobile_force_fullscreen && ( 'ontouchstart' in window ) && flowplayer.support.fvmobile ) {
|
1965 |
flowplayer(function(api, root) {
|
1966 |
+
if( jQuery(root).hasClass('is-audio') ) return;
|
1967 |
+
|
1968 |
if( flowplayer.support.iOS.iPad || flowplayer.support.iOS.iPhone && flowplayer.support.iOS.version >= 10 ) {
|
1969 |
api.bind('ready', function() {
|
1970 |
api.fullscreen();
|
2034 |
}
|
2035 |
quality_sort();
|
2036 |
} else if(api.engine.engineName == 'hlsjs-lite' ) {
|
2037 |
+
if( localStorage.FVPlayerHLSQuality && api.video.qualities > 2 ) {
|
2038 |
api.quality(localStorage.FVPlayerHLSQuality);
|
2039 |
root.one('progress', function() {
|
2040 |
setTimeout( function() {
|
2628 |
}
|
2629 |
|
2630 |
});
|
2631 |
+
|
2632 |
+
|
2633 |
+
// HSL engine on iOS and on Safari doesn't report error for HTTP 403. If there is no progress event for 5 second and it's not loading or anything, we can assume that the HLS segment has failed to load
|
2634 |
+
flowplayer( function(api,root) {
|
2635 |
+
if( !flowplayer.support.browser.safari && !flowplayer.support.iOS && !flowplayer.support.android ) return;
|
2636 |
+
|
2637 |
+
root = jQuery(root);
|
2638 |
+
|
2639 |
+
var no_progress = false,
|
2640 |
+
time_start = 0,
|
2641 |
+
time_delay = 0;
|
2642 |
+
|
2643 |
+
api.on('load', function(e,api,video) {
|
2644 |
+
time_start = new Date().getTime();
|
2645 |
+
});
|
2646 |
+
|
2647 |
+
api.on('ready', function() {
|
2648 |
+
if( api.video.is_fv_recoverable && api.engine.engineName == 'html5' && ( api.video.type == 'application/x-mpegurl' || api.video.type == 'video/fv-mp4' ) ) {
|
2649 |
+
|
2650 |
+
time_delay = new Date().getTime() - time_start;
|
2651 |
+
|
2652 |
+
console.log('HLS stream took '+time_delay+' ms to start');
|
2653 |
+
|
2654 |
+
if( time_delay < 500 ) time_delay = 500;
|
2655 |
+
time_delay = 10 * time_delay;
|
2656 |
+
if( time_delay > 15000 ) time_delay = 15000;
|
2657 |
+
|
2658 |
+
no_progress = setTimeout( hls_check, time_delay );
|
2659 |
+
|
2660 |
+
api.on('progress', function(e,api,time) {
|
2661 |
+
clearInterval(no_progress);
|
2662 |
+
no_progress = setTimeout( hls_check, time_delay );
|
2663 |
+
});
|
2664 |
+
}
|
2665 |
+
});
|
2666 |
+
|
2667 |
+
function hls_check() {
|
2668 |
+
if( api.ready && api.playing && !api.loading && !api.finished ) {
|
2669 |
+
console.log('HLS stream stale for '+time_delay+' ms, triggering error!');
|
2670 |
+
fv_player_notice(root,fv_flowplayer_translations.video_reload+' <a class="fv-player-reload" href="#">↻</a>','progress error unload');
|
2671 |
+
jQuery('.fv-player-reload').click( function() {
|
2672 |
+
api.trigger('error', [api, { code: 4, video: api.video }]);
|
2673 |
+
return false;
|
2674 |
+
});
|
2675 |
+
}
|
2676 |
+
}
|
2677 |
+
|
2678 |
+
});
|
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. Embed videos (MP4, WEBM, OGV, FLV) into posts or pages. Uses Flowplayer 6.
|
6 |
-
Version: 6.6.
|
7 |
Author URI: http://foliovision.com/
|
8 |
License: GPL-3.0
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.txt
|
@@ -26,9 +26,9 @@ License URI: http://www.gnu.org/licenses/gpl-3.0.txt
|
|
26 |
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
27 |
*/
|
28 |
|
29 |
-
$fv_wp_flowplayer_ver = '6.6.
|
30 |
$fv_wp_flowplayer_core_ver = '6.0.5';
|
31 |
-
$fv_wp_flowplayer_ver_beta = '7.1.
|
32 |
$fv_wp_flowplayer_core_ver_beta = '7.2.6.1';
|
33 |
|
34 |
include( 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. Embed videos (MP4, WEBM, OGV, FLV) into posts or pages. Uses Flowplayer 6.
|
6 |
+
Version: 6.6.6
|
7 |
Author URI: http://foliovision.com/
|
8 |
License: GPL-3.0
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.txt
|
26 |
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
27 |
*/
|
28 |
|
29 |
+
$fv_wp_flowplayer_ver = '6.6.6';
|
30 |
$fv_wp_flowplayer_core_ver = '6.0.5';
|
31 |
+
$fv_wp_flowplayer_ver_beta = '7.1.12.726.beta.1';
|
32 |
$fv_wp_flowplayer_core_ver_beta = '7.2.6.1';
|
33 |
|
34 |
include( dirname( __FILE__ ) . '/includes/extra-functions.php' );
|
flowplayer/fv-flowplayer.min.js
CHANGED
@@ -548,9 +548,9 @@ function fv_player_preload() {
|
|
548 |
|
549 |
//sets height for embedded players
|
550 |
if( window.self != window.top && !location.href.match(/fv_player_preview/) ){
|
551 |
-
jQuery('.flowplayer').height(jQuery(window).height());
|
552 |
jQuery(window.self).resize(function(){
|
553 |
-
jQuery('.flowplayer').height(jQuery(window.self).height())
|
554 |
})
|
555 |
}
|
556 |
|
@@ -756,7 +756,11 @@ flowplayer( function(api,root) {
|
|
756 |
|
757 |
if( root.find('.fp-logo').attr('href') === "undefined" ) {
|
758 |
root.find('.fp-logo').removeAttr('href');
|
759 |
-
}
|
|
|
|
|
|
|
|
|
760 |
|
761 |
api.bind("pause resume finish unload ready", function(e,api) {
|
762 |
root.addClass('no-brand');
|
@@ -797,7 +801,7 @@ flowplayer( function(api,root) {
|
|
797 |
}
|
798 |
});
|
799 |
|
800 |
-
jQuery(document).on('contextmenu', '.flowplayer
|
801 |
e.preventDefault();
|
802 |
});
|
803 |
|
548 |
|
549 |
//sets height for embedded players
|
550 |
if( window.self != window.top && !location.href.match(/fv_player_preview/) ){
|
551 |
+
jQuery('.flowplayer.fp-is-embed').height(jQuery(window).height());
|
552 |
jQuery(window.self).resize(function(){
|
553 |
+
jQuery('.flowplayer.fp-is-embed').height(jQuery(window.self).height())
|
554 |
})
|
555 |
}
|
556 |
|
756 |
|
757 |
if( root.find('.fp-logo').attr('href') === "undefined" ) {
|
758 |
root.find('.fp-logo').removeAttr('href');
|
759 |
+
}
|
760 |
+
|
761 |
+
root.find('.fp-logo').click( function() {
|
762 |
+
root.find('.fp-ui').click();
|
763 |
+
});
|
764 |
|
765 |
api.bind("pause resume finish unload ready", function(e,api) {
|
766 |
root.addClass('no-brand');
|
801 |
}
|
802 |
});
|
803 |
|
804 |
+
jQuery(document).on('contextmenu', '.flowplayer', function(e) {
|
805 |
e.preventDefault();
|
806 |
});
|
807 |
|
includes/fp-api-private.php
CHANGED
@@ -353,7 +353,10 @@ $this->strPrivateAPI - also
|
|
353 |
$request_args['version'] = isset($checked_data->checked[$plugin_path]) ? $checked_data->checked[$plugin_path] : '0.1';
|
354 |
}
|
355 |
else{
|
356 |
-
|
|
|
|
|
|
|
357 |
if( empty($cache_plugins[$plugin_path]['Version']) ){
|
358 |
return $checked_data;
|
359 |
}
|
@@ -365,15 +368,19 @@ $this->strPrivateAPI - also
|
|
365 |
$sTransient = $this->strPluginSlug.'_fp-private-updates-api-'.sanitize_title($request_args['version']);
|
366 |
$response = get_transient( $sTransient );
|
367 |
|
368 |
-
if( !$response ){
|
369 |
-
|
370 |
-
if( is_wp_error($raw_response) ) {
|
371 |
-
$request['sslverify'] = false;
|
372 |
$raw_response = wp_remote_post( $this->strPrivateAPI, $request );
|
373 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
374 |
|
375 |
if( !is_wp_error( $raw_response ) && ( $raw_response['response']['code'] == 200 ) ) {
|
376 |
-
$response = @unserialize( $raw_response['body'] );
|
377 |
if( !$response ) $response = $raw_response['body'];
|
378 |
}
|
379 |
|
@@ -411,7 +418,7 @@ $this->strPrivateAPI - also
|
|
411 |
if( is_wp_error( $request ) ) {
|
412 |
$res = new WP_Error( 'plugins_api_failed', __( 'An Unexpected HTTP Error occurred during the API request.</p> <p><a href="?" onclick="document.location.reload(); return false;">Try again</a>' ), $request->get_error_message() );
|
413 |
}else{
|
414 |
-
$res = unserialize( $request['body'] );
|
415 |
if( $res === false ) $res = new WP_Error( 'plugins_api_failed', __( 'An unknown error occurred' ), $request['body'] );
|
416 |
}
|
417 |
|
353 |
$request_args['version'] = isset($checked_data->checked[$plugin_path]) ? $checked_data->checked[$plugin_path] : '0.1';
|
354 |
}
|
355 |
else{
|
356 |
+
if( !function_exists('get_plugins') ) return $checked_data;
|
357 |
+
|
358 |
+
$cache_plugins = get_plugins();
|
359 |
+
|
360 |
if( empty($cache_plugins[$plugin_path]['Version']) ){
|
361 |
return $checked_data;
|
362 |
}
|
368 |
$sTransient = $this->strPluginSlug.'_fp-private-updates-api-'.sanitize_title($request_args['version']);
|
369 |
$response = get_transient( $sTransient );
|
370 |
|
371 |
+
if( !$response ){
|
372 |
+
if( stripos($this->strPrivateAPI,'plugins.trac.wordpress.org') === false ) {
|
|
|
|
|
373 |
$raw_response = wp_remote_post( $this->strPrivateAPI, $request );
|
374 |
+
if( is_wp_error($raw_response) ) {
|
375 |
+
$request['sslverify'] = false;
|
376 |
+
$raw_response = wp_remote_post( $this->strPrivateAPI, $request );
|
377 |
+
}
|
378 |
+
} else {
|
379 |
+
$raw_response = wp_remote_get( $this->strPrivateAPI );
|
380 |
+
}
|
381 |
|
382 |
if( !is_wp_error( $raw_response ) && ( $raw_response['response']['code'] == 200 ) ) {
|
383 |
+
$response = @unserialize( preg_replace( '~^/\*[\s\S]*?\*/\s+~', '', $raw_response['body'] ) );
|
384 |
if( !$response ) $response = $raw_response['body'];
|
385 |
}
|
386 |
|
418 |
if( is_wp_error( $request ) ) {
|
419 |
$res = new WP_Error( 'plugins_api_failed', __( 'An Unexpected HTTP Error occurred during the API request.</p> <p><a href="?" onclick="document.location.reload(); return false;">Try again</a>' ), $request->get_error_message() );
|
420 |
}else{
|
421 |
+
$res = unserialize( preg_replace( '~^/\*[\s\S]*?\*/\s+~', '', $request['body'] ) );
|
422 |
if( $res === false ) $res = new WP_Error( 'plugins_api_failed', __( 'An unknown error occurred' ), $request['body'] );
|
423 |
}
|
424 |
|
js/fancybox.js
ADDED
@@ -0,0 +1,193 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// ==================================================
|
2 |
+
// fancyBox v3.3.5
|
3 |
+
//
|
4 |
+
// Licensed GPLv3 for open source use
|
5 |
+
// or fancyBox Commercial License for commercial use
|
6 |
+
//
|
7 |
+
// http://fancyapps.com/fancybox/
|
8 |
+
// Copyright 2018 fancyApps
|
9 |
+
//
|
10 |
+
// ==================================================
|
11 |
+
!function(t,e,n,o){"use strict";function i(t,e){var o,i,a=[],s=0;t&&t.isDefaultPrevented()||(t.preventDefault(),e=t&&t.data?t.data.options:e||{},o=e.$target||n(t.currentTarget),i=o.attr("data-fancybox")||"",i?(a=e.selector?n(e.selector):t.data?t.data.items:[],a=a.length?a.filter('[data-fancybox="'+i+'"]'):n('[data-fancybox="'+i+'"]'),s=a.index(o),s<0&&(s=0)):a=[o],n.fancybox.open(a,e,s))}if(t.console=t.console||{info:function(t){}},n){if(n.fn.fancybox)return void console.info("fancyBox already initialized");var a={loop:!1,gutter:50,keyboard:!0,arrows:!0,infobar:!0,smallBtn:"auto",toolbar:"auto",buttons:["zoom","thumbs","close"],idleTime:3,protect:!1,modal:!1,image:{preload:!1},ajax:{settings:{data:{fancybox:!0}}},iframe:{tpl:'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen allowtransparency="true" src=""></iframe>',preload:!0,css:{},attr:{scrolling:"auto"}},defaultType:"image",animationEffect:"zoom",animationDuration:366,zoomOpacity:"auto",transitionEffect:"fade",transitionDuration:366,slideClass:"",baseClass:"",baseTpl:'<div class="fancybox-container" role="dialog" tabindex="-1"><div class="fancybox-bg"></div><div class="fancybox-inner"><div class="fancybox-infobar"><span data-fancybox-index></span> / <span data-fancybox-count></span></div><div class="fancybox-toolbar">{{buttons}}</div><div class="fancybox-navigation">{{arrows}}</div><div class="fancybox-stage"></div><div class="fancybox-caption"></div></div></div>',spinnerTpl:'<div class="fancybox-loading"></div>',errorTpl:'<div class="fancybox-error"><p>{{ERROR}}</p></div>',btnTpl:{download:'<a download data-fancybox-download class="fancybox-button fancybox-button--download" title="{{DOWNLOAD}}" href="javascript:;"><svg viewBox="0 0 40 40"><path d="M13,16 L20,23 L27,16 M20,7 L20,23 M10,24 L10,28 L30,28 L30,24" /></svg></a>',zoom:'<button data-fancybox-zoom class="fancybox-button fancybox-button--zoom" title="{{ZOOM}}"><svg viewBox="0 0 40 40"><path d="M18,17 m-8,0 a8,8 0 1,0 16,0 a8,8 0 1,0 -16,0 M24,22 L31,29" /></svg></button>',close:'<button data-fancybox-close class="fancybox-button fancybox-button--close" title="{{CLOSE}}"><svg viewBox="0 0 40 40"><path d="M10,10 L30,30 M30,10 L10,30" /></svg></button>',smallBtn:'<button data-fancybox-close class="fancybox-close-small" title="{{CLOSE}}"><svg viewBox="0 0 32 32"><path d="M10,10 L22,22 M22,10 L10,22"></path></svg></button>',arrowLeft:'<a data-fancybox-prev class="fancybox-button fancybox-button--arrow_left" title="{{PREV}}" href="javascript:;"><svg viewBox="0 0 40 40"><path d="M18,12 L10,20 L18,28 M10,20 L30,20"></path></svg></a>',arrowRight:'<a data-fancybox-next class="fancybox-button fancybox-button--arrow_right" title="{{NEXT}}" href="javascript:;"><svg viewBox="0 0 40 40"><path d="M10,20 L30,20 M22,12 L30,20 L22,28"></path></svg></a>'},parentEl:"body",autoFocus:!1,backFocus:!0,trapFocus:!0,fullScreen:{autoStart:!1},touch:{vertical:!0,momentum:!0},hash:null,media:{},slideShow:{autoStart:!1,speed:4e3},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"},wheel:"auto",onInit:n.noop,beforeLoad:n.noop,afterLoad:n.noop,beforeShow:n.noop,afterShow:n.noop,beforeClose:n.noop,afterClose:n.noop,onActivate:n.noop,onDeactivate:n.noop,clickContent:function(t,e){return"image"===t.type&&"zoom"},clickSlide:"close",clickOutside:"close",dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1,mobile:{idleTime:!1,clickContent:function(t,e){return"image"===t.type&&"toggleControls"},clickSlide:function(t,e){return"image"===t.type?"toggleControls":"close"},dblclickContent:function(t,e){return"image"===t.type&&"zoom"},dblclickSlide:function(t,e){return"image"===t.type&&"zoom"}},lang:"en",i18n:{en:{CLOSE:"Close",NEXT:"Next",PREV:"Previous",ERROR:"The requested content cannot be loaded. <br/> Please try again later.",PLAY_START:"Start slideshow",PLAY_STOP:"Pause slideshow",FULL_SCREEN:"Full screen",THUMBS:"Thumbnails",DOWNLOAD:"Download",SHARE:"Share",ZOOM:"Zoom"},de:{CLOSE:"Schliessen",NEXT:"Weiter",PREV:"Zurück",ERROR:"Die angeforderten Daten konnten nicht geladen werden. <br/> Bitte versuchen Sie es später nochmal.",PLAY_START:"Diaschau starten",PLAY_STOP:"Diaschau beenden",FULL_SCREEN:"Vollbild",THUMBS:"Vorschaubilder",DOWNLOAD:"Herunterladen",SHARE:"Teilen",ZOOM:"Maßstab"}}},s=n(t),r=n(e),c=0,l=function(t){return t&&t.hasOwnProperty&&t instanceof n},d=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),u=function(){var t,n=e.createElement("fakeelement"),i={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(t in i)if(n.style[t]!==o)return i[t];return"transitionend"}(),f=function(t){return t&&t.length&&t[0].offsetHeight},p=function(t,e){var o=n.extend(!0,{},t,e);return n.each(e,function(t,e){n.isArray(e)&&(o[t]=e)}),o},h=function(t,o,i){var a=this;a.opts=p({index:i},n.fancybox.defaults),n.isPlainObject(o)&&(a.opts=p(a.opts,o)),n.fancybox.isMobile&&(a.opts=p(a.opts,a.opts.mobile)),a.id=a.opts.id||++c,a.currIndex=parseInt(a.opts.index,10)||0,a.prevIndex=null,a.prevPos=null,a.currPos=0,a.firstRun=!0,a.group=[],a.slides={},a.addContent(t),a.group.length&&(a.$lastFocus=n(e.activeElement).trigger("blur"),a.init())};n.extend(h.prototype,{init:function(){var i,a,s,r=this,c=r.group[r.currIndex],l=c.opts,d=n.fancybox.scrollbarWidth;n.fancybox.getInstance()||l.hideScrollbar===!1||(n("body").addClass("fancybox-active"),!n.fancybox.isMobile&&e.body.scrollHeight>t.innerHeight&&(d===o&&(i=n('<div style="width:100px;height:100px;overflow:scroll;" />').appendTo("body"),d=n.fancybox.scrollbarWidth=i[0].offsetWidth-i[0].clientWidth,i.remove()),n("head").append('<style id="fancybox-style-noscroll" type="text/css">.compensate-for-scrollbar { margin-right: '+d+"px; }</style>"),n("body").addClass("compensate-for-scrollbar"))),s="",n.each(l.buttons,function(t,e){s+=l.btnTpl[e]||""}),a=n(r.translate(r,l.baseTpl.replace("{{buttons}}",s).replace("{{arrows}}",l.btnTpl.arrowLeft+l.btnTpl.arrowRight))).attr("id","fancybox-container-"+r.id).addClass("fancybox-is-hidden").addClass(l.baseClass).data("FancyBox",r).appendTo(l.parentEl),r.$refs={container:a},["bg","inner","infobar","toolbar","stage","caption","navigation"].forEach(function(t){r.$refs[t]=a.find(".fancybox-"+t)}),r.trigger("onInit"),r.activate(),r.jumpTo(r.currIndex)},translate:function(t,e){var n=t.opts.i18n[t.opts.lang];return e.replace(/\{\{(\w+)\}\}/g,function(t,e){var i=n[e];return i===o?t:i})},addContent:function(t){var e,i=this,a=n.makeArray(t);n.each(a,function(t,e){var a,s,r,c,l,d={},u={};n.isPlainObject(e)?(d=e,u=e.opts||e):"object"===n.type(e)&&n(e).length?(a=n(e),u=a.data()||{},u=n.extend(!0,{},u,u.options),u.$orig=a,d.src=i.opts.src||u.src||a.attr("href"),d.type||d.src||(d.type="inline",d.src=e)):d={type:"html",src:e+""},d.opts=n.extend(!0,{},i.opts,u),n.isArray(u.buttons)&&(d.opts.buttons=u.buttons),s=d.type||d.opts.type,c=d.src||"",!s&&c&&((r=c.match(/\.(mp4|mov|ogv)((\?|#).*)?$/i))?(s="video",d.opts.videoFormat||(d.opts.videoFormat="video/"+("ogv"===r[1]?"ogg":r[1]))):c.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i)?s="image":c.match(/\.(pdf)((\?|#).*)?$/i)?s="iframe":"#"===c.charAt(0)&&(s="inline")),s?d.type=s:i.trigger("objectNeedsType",d),d.contentType||(d.contentType=n.inArray(d.type,["html","inline","ajax"])>-1?"html":d.type),d.index=i.group.length,"auto"==d.opts.smallBtn&&(d.opts.smallBtn=n.inArray(d.type,["html","inline","ajax"])>-1),"auto"===d.opts.toolbar&&(d.opts.toolbar=!d.opts.smallBtn),d.opts.$trigger&&d.index===i.opts.index&&(d.opts.$thumb=d.opts.$trigger.find("img:first")),d.opts.$thumb&&d.opts.$thumb.length||!d.opts.$orig||(d.opts.$thumb=d.opts.$orig.find("img:first")),"function"===n.type(d.opts.caption)&&(d.opts.caption=d.opts.caption.apply(e,[i,d])),"function"===n.type(i.opts.caption)&&(d.opts.caption=i.opts.caption.apply(e,[i,d])),d.opts.caption instanceof n||(d.opts.caption=d.opts.caption===o?"":d.opts.caption+""),"ajax"===d.type&&(l=c.split(/\s+/,2),l.length>1&&(d.src=l.shift(),d.opts.filter=l.shift())),d.opts.modal&&(d.opts=n.extend(!0,d.opts,{infobar:0,toolbar:0,smallBtn:0,keyboard:0,slideShow:0,fullScreen:0,thumbs:0,touch:0,clickContent:!1,clickSlide:!1,clickOutside:!1,dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1})),i.group.push(d)}),Object.keys(i.slides).length&&(i.updateControls(),e=i.Thumbs,e&&e.isActive&&(e.create(),e.focus()))},addEvents:function(){var o=this;o.removeEvents(),o.$refs.container.on("click.fb-close","[data-fancybox-close]",function(t){t.stopPropagation(),t.preventDefault(),o.close(t)}).on("touchstart.fb-prev click.fb-prev","[data-fancybox-prev]",function(t){t.stopPropagation(),t.preventDefault(),o.previous()}).on("touchstart.fb-next click.fb-next","[data-fancybox-next]",function(t){t.stopPropagation(),t.preventDefault(),o.next()}).on("click.fb","[data-fancybox-zoom]",function(t){o[o.isScaledDown()?"scaleToActual":"scaleToFit"]()}),s.on("orientationchange.fb resize.fb",function(t){t&&t.originalEvent&&"resize"===t.originalEvent.type?d(function(){o.update()}):(o.$refs.stage.hide(),setTimeout(function(){o.$refs.stage.show(),o.update()},n.fancybox.isMobile?600:250))}),r.on("focusin.fb",function(t){var o=n.fancybox?n.fancybox.getInstance():null;o.isClosing||!o.current||!o.current.opts.trapFocus||n(t.target).hasClass("fancybox-container")||n(t.target).is(e)||o&&"fixed"!==n(t.target).css("position")&&!o.$refs.container.has(t.target).length&&(t.stopPropagation(),o.focus())}),r.on("keydown.fb",function(t){var e=o.current,i=t.keyCode||t.which;if(e&&e.opts.keyboard&&!(t.ctrlKey||t.altKey||t.shiftKey||n(t.target).is("input")||n(t.target).is("textarea")))return 8===i||27===i?(t.preventDefault(),void o.close(t)):37===i||38===i?(t.preventDefault(),void o.previous()):39===i||40===i?(t.preventDefault(),void o.next()):void o.trigger("afterKeydown",t,i)}),o.group[o.currIndex].opts.idleTime&&(o.idleSecondsCounter=0,r.on("mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle",function(t){o.idleSecondsCounter=0,o.isIdle&&o.showControls(),o.isIdle=!1}),o.idleInterval=t.setInterval(function(){o.idleSecondsCounter++,o.idleSecondsCounter>=o.group[o.currIndex].opts.idleTime&&!o.isDragging&&(o.isIdle=!0,o.idleSecondsCounter=0,o.hideControls())},1e3))},removeEvents:function(){var e=this;s.off("orientationchange.fb resize.fb"),r.off("focusin.fb keydown.fb .fb-idle"),this.$refs.container.off(".fb-close .fb-prev .fb-next"),e.idleInterval&&(t.clearInterval(e.idleInterval),e.idleInterval=null)},previous:function(t){return this.jumpTo(this.currPos-1,t)},next:function(t){return this.jumpTo(this.currPos+1,t)},jumpTo:function(t,e){var i,a,s,r,c,l,d,u=this,p=u.group.length;if(!(u.isDragging||u.isClosing||u.isAnimating&&u.firstRun)){if(t=parseInt(t,10),a=u.current?u.current.opts.loop:u.opts.loop,!a&&(t<0||t>=p))return!1;if(i=u.firstRun=!Object.keys(u.slides).length,!(p<2&&!i&&u.isDragging)){if(r=u.current,u.prevIndex=u.currIndex,u.prevPos=u.currPos,s=u.createSlide(t),p>1&&((a||s.index>0)&&u.createSlide(t-1),(a||s.index<p-1)&&u.createSlide(t+1)),u.current=s,u.currIndex=s.index,u.currPos=s.pos,u.trigger("beforeShow",i),u.updateControls(),l=n.fancybox.getTranslate(s.$slide),s.isMoved=(0!==l.left||0!==l.top)&&!s.$slide.hasClass("fancybox-animated"),s.forcedDuration=o,n.isNumeric(e)?s.forcedDuration=e:e=s.opts[i?"animationDuration":"transitionDuration"],e=parseInt(e,10),i)return s.opts.animationEffect&&e&&u.$refs.container.css("transition-duration",e+"ms"),u.$refs.container.removeClass("fancybox-is-hidden"),f(u.$refs.container),u.$refs.container.addClass("fancybox-is-open"),f(u.$refs.container),s.$slide.addClass("fancybox-slide--previous"),u.loadSlide(s),s.$slide.removeClass("fancybox-slide--previous").addClass("fancybox-slide--current"),void u.preload("image");n.each(u.slides,function(t,e){n.fancybox.stop(e.$slide)}),s.$slide.removeClass("fancybox-slide--next fancybox-slide--previous").addClass("fancybox-slide--current"),s.isMoved?(c=Math.round(s.$slide.width()),n.each(u.slides,function(t,o){var i=o.pos-s.pos;n.fancybox.animate(o.$slide,{top:0,left:i*c+i*o.opts.gutter},e,function(){o.$slide.removeAttr("style").removeClass("fancybox-slide--next fancybox-slide--previous"),o.pos===u.currPos&&(s.isMoved=!1,u.complete())})})):u.$refs.stage.children().removeAttr("style"),s.isLoaded?u.revealContent(s):u.loadSlide(s),u.preload("image"),r.pos!==s.pos&&(d="fancybox-slide--"+(r.pos>s.pos?"next":"previous"),r.$slide.removeClass("fancybox-slide--complete fancybox-slide--current fancybox-slide--next fancybox-slide--previous"),r.isComplete=!1,e&&(s.isMoved||s.opts.transitionEffect)&&(s.isMoved?r.$slide.addClass(d):(d="fancybox-animated "+d+" fancybox-fx-"+s.opts.transitionEffect,n.fancybox.animate(r.$slide,d,e,function(){r.$slide.removeClass(d).removeAttr("style")}))))}}},createSlide:function(t){var e,o,i=this;return o=t%i.group.length,o=o<0?i.group.length+o:o,!i.slides[t]&&i.group[o]&&(e=n('<div class="fancybox-slide"></div>').appendTo(i.$refs.stage),i.slides[t]=n.extend(!0,{},i.group[o],{pos:t,$slide:e,isLoaded:!1}),i.updateSlide(i.slides[t])),i.slides[t]},scaleToActual:function(t,e,i){var a,s,r,c,l,d=this,u=d.current,f=u.$content,p=n.fancybox.getTranslate(u.$slide).width,h=n.fancybox.getTranslate(u.$slide).height,g=u.width,b=u.height;!d.isAnimating&&f&&"image"==u.type&&u.isLoaded&&!u.hasError&&(n.fancybox.stop(f),d.isAnimating=!0,t=t===o?.5*p:t,e=e===o?.5*h:e,a=n.fancybox.getTranslate(f),a.top-=n.fancybox.getTranslate(u.$slide).top,a.left-=n.fancybox.getTranslate(u.$slide).left,c=g/a.width,l=b/a.height,s=.5*p-.5*g,r=.5*h-.5*b,g>p&&(s=a.left*c-(t*c-t),s>0&&(s=0),s<p-g&&(s=p-g)),b>h&&(r=a.top*l-(e*l-e),r>0&&(r=0),r<h-b&&(r=h-b)),d.updateCursor(g,b),n.fancybox.animate(f,{top:r,left:s,scaleX:c,scaleY:l},i||330,function(){d.isAnimating=!1}),d.SlideShow&&d.SlideShow.isActive&&d.SlideShow.stop())},scaleToFit:function(t){var e,o=this,i=o.current,a=i.$content;!o.isAnimating&&a&&"image"==i.type&&i.isLoaded&&!i.hasError&&(n.fancybox.stop(a),o.isAnimating=!0,e=o.getFitPos(i),o.updateCursor(e.width,e.height),n.fancybox.animate(a,{top:e.top,left:e.left,scaleX:e.width/a.width(),scaleY:e.height/a.height()},t||330,function(){o.isAnimating=!1}))},getFitPos:function(t){var e,n,o,i,a,s=this,r=t.$content,c=t.width||t.opts.width,l=t.height||t.opts.height,d={};return!!(t.isLoaded&&r&&r.length)&&(i={top:parseInt(t.$slide.css("paddingTop"),10),right:parseInt(t.$slide.css("paddingRight"),10),bottom:parseInt(t.$slide.css("paddingBottom"),10),left:parseInt(t.$slide.css("paddingLeft"),10)},e=parseInt(s.$refs.stage.width(),10)-(i.left+i.right),n=parseInt(s.$refs.stage.height(),10)-(i.top+i.bottom),c&&l||(c=e,l=n),o=Math.min(1,e/c,n/l),c=Math.floor(o*c),l=Math.floor(o*l),"image"===t.type?(d.top=Math.floor(.5*(n-l))+i.top,d.left=Math.floor(.5*(e-c))+i.left):"video"===t.contentType&&(a=t.opts.width&&t.opts.height?c/l:t.opts.ratio||16/9,l>c/a?l=c/a:c>l*a&&(c=l*a)),d.width=c,d.height=l,d)},update:function(){var t=this;n.each(t.slides,function(e,n){t.updateSlide(n)})},updateSlide:function(t,e){var o=this,i=t&&t.$content,a=t.width||t.opts.width,s=t.height||t.opts.height;i&&(a||s||"video"===t.contentType)&&!t.hasError&&(n.fancybox.stop(i),n.fancybox.setTranslate(i,o.getFitPos(t)),t.pos===o.currPos&&(o.isAnimating=!1,o.updateCursor())),t.$slide.trigger("refresh"),o.$refs.toolbar.toggleClass("compensate-for-scrollbar",t.$slide.get(0).scrollHeight>t.$slide.get(0).clientHeight),o.trigger("onUpdate",t)},centerSlide:function(t,e){var i,a,s=this;s.current&&(i=Math.round(t.$slide.width()),a=t.pos-s.current.pos,n.fancybox.animate(t.$slide,{top:0,left:a*i+a*t.opts.gutter,opacity:1},e===o?0:e,null,!1))},updateCursor:function(t,e){var o,i=this,a=i.current,s=i.$refs.container.removeClass("fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-drag fancybox-can-zoomOut");a&&!i.isClosing&&(o=i.isZoomable(),s.toggleClass("fancybox-is-zoomable",o),n("[data-fancybox-zoom]").prop("disabled",!o),o&&("zoom"===a.opts.clickContent||n.isFunction(a.opts.clickContent)&&"zoom"===a.opts.clickContent(a))?i.isScaledDown(t,e)?s.addClass("fancybox-can-zoomIn"):a.opts.touch?s.addClass("fancybox-can-drag"):s.addClass("fancybox-can-zoomOut"):a.opts.touch&&"video"!==a.contentType&&s.addClass("fancybox-can-drag"))},isZoomable:function(){var t,e=this,n=e.current;if(n&&!e.isClosing&&"image"===n.type&&!n.hasError){if(!n.isLoaded)return!0;if(t=e.getFitPos(n),n.width>t.width||n.height>t.height)return!0}return!1},isScaledDown:function(t,e){var i=this,a=!1,s=i.current,r=s.$content;return t!==o&&e!==o?a=t<s.width&&e<s.height:r&&(a=n.fancybox.getTranslate(r),a=a.width<s.width&&a.height<s.height),a},canPan:function(){var t,e=this,n=!1,o=e.current;return"image"===o.type&&(t=o.$content)&&!o.hasError&&(n=e.getFitPos(o),n=Math.abs(t.width()-n.width)>1||Math.abs(t.height()-n.height)>1),n},loadSlide:function(t){var e,o,i,a=this;if(!t.isLoading&&!t.isLoaded){switch(t.isLoading=!0,a.trigger("beforeLoad",t),e=t.type,o=t.$slide,o.off("refresh").trigger("onReset").addClass(t.opts.slideClass),e){case"image":a.setImage(t);break;case"iframe":a.setIframe(t);break;case"html":a.setContent(t,t.src||t.content);break;case"video":a.setContent(t,'<video class="fancybox-video" controls controlsList="nodownload"><source src="'+t.src+'" type="'+t.opts.videoFormat+"\">Your browser doesn't support HTML5 video</video");break;case"inline":n(t.src).length?a.setContent(t,n(t.src)):a.setError(t);break;case"ajax":a.showLoading(t),i=n.ajax(n.extend({},t.opts.ajax.settings,{url:t.src,success:function(e,n){"success"===n&&a.setContent(t,e)},error:function(e,n){e&&"abort"!==n&&a.setError(t)}})),o.one("onReset",function(){i.abort()});break;default:a.setError(t)}return!0}},setImage:function(e){var o,i,a,s,r,c=this,l=e.opts.srcset||e.opts.image.srcset;if(e.timouts=setTimeout(function(){var t=e.$image;!e.isLoading||t&&t[0].complete||e.hasError||c.showLoading(e)},350),l){s=t.devicePixelRatio||1,r=t.innerWidth*s,a=l.split(",").map(function(t){var e={};return t.trim().split(/\s+/).forEach(function(t,n){var o=parseInt(t.substring(0,t.length-1),10);return 0===n?e.url=t:void(o&&(e.value=o,e.postfix=t[t.length-1]))}),e}),a.sort(function(t,e){return t.value-e.value});for(var d=0;d<a.length;d++){var u=a[d];if("w"===u.postfix&&u.value>=r||"x"===u.postfix&&u.value>=s){i=u;break}}!i&&a.length&&(i=a[a.length-1]),i&&(e.src=i.url,e.width&&e.height&&"w"==i.postfix&&(e.height=e.width/e.height*i.value,e.width=i.value),e.opts.srcset=l)}e.$content=n('<div class="fancybox-content"></div>').addClass("fancybox-is-hidden").appendTo(e.$slide.addClass("fancybox-slide--image")),o=e.opts.thumb||!(!e.opts.$thumb||!e.opts.$thumb.length)&&e.opts.$thumb.attr("src"),e.opts.preload!==!1&&e.opts.width&&e.opts.height&&o&&(e.width=e.opts.width,e.height=e.opts.height,e.$ghost=n("<img />").one("error",function(){n(this).remove(),e.$ghost=null}).one("load",function(){c.afterLoad(e)}).addClass("fancybox-image").appendTo(e.$content).attr("src",o)),c.setBigImage(e)},setBigImage:function(t){var e=this,o=n("<img />");t.$image=o.one("error",function(){e.setError(t)}).one("load",function(){var n;t.$ghost||(e.resolveImageSlideSize(t,this.naturalWidth,this.naturalHeight),e.afterLoad(t)),t.timouts&&(clearTimeout(t.timouts),t.timouts=null),e.isClosing||(t.opts.srcset&&(n=t.opts.sizes,n&&"auto"!==n||(n=(t.width/t.height>1&&s.width()/s.height()>1?"100":Math.round(t.width/t.height*100))+"vw"),o.attr("sizes",n).attr("srcset",t.opts.srcset)),t.$ghost&&setTimeout(function(){t.$ghost&&!e.isClosing&&t.$ghost.hide()},Math.min(300,Math.max(1e3,t.height/1600))),e.hideLoading(t))}).addClass("fancybox-image").attr("src",t.src).appendTo(t.$content),(o[0].complete||"complete"==o[0].readyState)&&o[0].naturalWidth&&o[0].naturalHeight?o.trigger("load"):o[0].error&&o.trigger("error")},resolveImageSlideSize:function(t,e,n){var o=parseInt(t.opts.width,10),i=parseInt(t.opts.height,10);t.width=e,t.height=n,o>0&&(t.width=o,t.height=Math.floor(o*n/e)),i>0&&(t.width=Math.floor(i*e/n),t.height=i)},setIframe:function(t){var e,i=this,a=t.opts.iframe,s=t.$slide;t.$content=n('<div class="fancybox-content'+(a.preload?" fancybox-is-hidden":"")+'"></div>').css(a.css).appendTo(s),s.addClass("fancybox-slide--"+t.contentType),t.$iframe=e=n(a.tpl.replace(/\{rnd\}/g,(new Date).getTime())).attr(a.attr).appendTo(t.$content),a.preload?(i.showLoading(t),e.on("load.fb error.fb",function(e){this.isReady=1,t.$slide.trigger("refresh"),i.afterLoad(t)}),s.on("refresh.fb",function(){var n,i,s=t.$content,r=a.css.width,c=a.css.height;if(1===e[0].isReady){try{n=e.contents(),i=n.find("body")}catch(t){}i&&i.length&&i.children().length&&(s.css({width:"",height:""}),r===o&&(r=Math.ceil(Math.max(i[0].clientWidth,i.outerWidth(!0)))),r&&s.width(r),c===o&&(c=Math.ceil(Math.max(i[0].clientHeight,i.outerHeight(!0)))),c&&s.height(c)),s.removeClass("fancybox-is-hidden")}})):this.afterLoad(t),e.attr("src",t.src),s.one("onReset",function(){try{n(this).find("iframe").hide().unbind().attr("src","//about:blank")}catch(t){}n(this).off("refresh.fb").empty(),t.isLoaded=!1})},setContent:function(t,e){var o=this;o.isClosing||(o.hideLoading(t),t.$content&&n.fancybox.stop(t.$content),t.$slide.empty(),l(e)&&e.parent().length?(e.parent().parent(".fancybox-slide--inline").trigger("onReset"),t.$placeholder=n("<div>").hide().insertAfter(e),e.css("display","inline-block")):t.hasError||("string"===n.type(e)&&(e=n("<div>").append(n.trim(e)).contents(),3===e[0].nodeType&&(e=n("<div>").html(e))),t.opts.filter&&(e=n("<div>").html(e).find(t.opts.filter))),t.$slide.one("onReset",function(){n(this).find("video,audio").trigger("pause"),t.$placeholder&&(t.$placeholder.after(e.hide()).remove(),t.$placeholder=null),t.$smallBtn&&(t.$smallBtn.remove(),t.$smallBtn=null),t.hasError||(n(this).empty(),t.isLoaded=!1)}),n(e).appendTo(t.$slide),n(e).is("video,audio")&&(n(e).addClass("fancybox-video"),n(e).wrap("<div></div>"),t.contentType="video",t.opts.width=t.opts.width||n(e).attr("width"),t.opts.height=t.opts.height||n(e).attr("height")),t.$content=t.$slide.children().filter("div,form,main,video,audio").first().addClass("fancybox-content"),t.$slide.addClass("fancybox-slide--"+t.contentType),this.afterLoad(t))},setError:function(t){t.hasError=!0,t.$slide.trigger("onReset").removeClass("fancybox-slide--"+t.contentType).addClass("fancybox-slide--error"),t.contentType="html",this.setContent(t,this.translate(t,t.opts.errorTpl)),t.pos===this.currPos&&(this.isAnimating=!1)},showLoading:function(t){var e=this;t=t||e.current,t&&!t.$spinner&&(t.$spinner=n(e.translate(e,e.opts.spinnerTpl)).appendTo(t.$slide))},hideLoading:function(t){var e=this;t=t||e.current,t&&t.$spinner&&(t.$spinner.remove(),delete t.$spinner)},afterLoad:function(t){var e=this;e.isClosing||(t.isLoading=!1,t.isLoaded=!0,e.trigger("afterLoad",t),e.hideLoading(t),t.pos===e.currPos&&e.updateCursor(),!t.opts.smallBtn||t.$smallBtn&&t.$smallBtn.length||(t.$smallBtn=n(e.translate(t,t.opts.btnTpl.smallBtn)).prependTo(t.$content)),t.opts.protect&&t.$content&&!t.hasError&&(t.$content.on("contextmenu.fb",function(t){return 2==t.button&&t.preventDefault(),!0}),"image"===t.type&&n('<div class="fancybox-spaceball"></div>').appendTo(t.$content)),e.revealContent(t))},revealContent:function(t){var e,i,a,s,r=this,c=t.$slide,l=!1,d=!1;return e=t.opts[r.firstRun?"animationEffect":"transitionEffect"],a=t.opts[r.firstRun?"animationDuration":"transitionDuration"],a=parseInt(t.forcedDuration===o?a:t.forcedDuration,10),t.pos===r.currPos&&(t.isComplete?e=!1:r.isAnimating=!0),!t.isMoved&&t.pos===r.currPos&&a||(e=!1),"zoom"===e&&(t.pos===r.currPos&&a&&"image"===t.type&&!t.hasError&&(d=r.getThumbPos(t))?l=r.getFitPos(t):e="fade"),"zoom"===e?(l.scaleX=l.width/d.width,l.scaleY=l.height/d.height,s=t.opts.zoomOpacity,"auto"==s&&(s=Math.abs(t.width/t.height-d.width/d.height)>.1),s&&(d.opacity=.1,l.opacity=1),n.fancybox.setTranslate(t.$content.removeClass("fancybox-is-hidden"),d),f(t.$content),void n.fancybox.animate(t.$content,l,a,function(){r.isAnimating=!1,r.complete()})):(r.updateSlide(t),e?(n.fancybox.stop(c),i="fancybox-animated fancybox-slide--"+(t.pos>=r.prevPos?"next":"previous")+" fancybox-fx-"+e,c.removeAttr("style").removeClass("fancybox-slide--current fancybox-slide--next fancybox-slide--previous").addClass(i),t.$content.removeClass("fancybox-is-hidden"),f(c),void n.fancybox.animate(c,"fancybox-slide--current",a,function(e){c.removeClass(i).removeAttr("style"),t.pos===r.currPos&&r.complete()},!0)):(f(c),t.$content.removeClass("fancybox-is-hidden"),void(t.pos===r.currPos&&r.complete())))},getThumbPos:function(o){var i,a=this,s=!1,r=o.opts.$thumb,c=r&&r.length&&r[0].ownerDocument===e?r.offset():0,l=function(e){for(var o,i=e[0],a=i.getBoundingClientRect(),s=[];null!==i.parentElement;)"hidden"!==n(i.parentElement).css("overflow")&&"auto"!==n(i.parentElement).css("overflow")||s.push(i.parentElement.getBoundingClientRect()),i=i.parentElement;return o=s.every(function(t){var e=Math.min(a.right,t.right)-Math.max(a.left,t.left),n=Math.min(a.bottom,t.bottom)-Math.max(a.top,t.top);return e>0&&n>0}),o&&a.bottom>0&&a.right>0&&a.left<n(t).width()&&a.top<n(t).height()};return c&&l(r)&&(i=a.$refs.stage.offset(),s={top:c.top-i.top+parseFloat(r.css("border-top-width")||0),left:c.left-i.left+parseFloat(r.css("border-left-width")||0),width:r.width(),height:r.height(),scaleX:1,scaleY:1}),s},complete:function(){var t=this,o=t.current,i={};!o.isMoved&&o.isLoaded&&(o.isComplete||(o.isComplete=!0,o.$slide.siblings().trigger("onReset"),t.preload("inline"),f(o.$slide),o.$slide.addClass("fancybox-slide--complete"),n.each(t.slides,function(e,o){o.pos>=t.currPos-1&&o.pos<=t.currPos+1?i[o.pos]=o:o&&(n.fancybox.stop(o.$slide),o.$slide.off().remove())}),t.slides=i),t.isAnimating=!1,t.updateCursor(),t.trigger("afterShow"),o.$slide.find("video,audio").filter(":visible:first").trigger("play"),(n(e.activeElement).is("[disabled]")||o.opts.autoFocus&&"image"!=o.type&&"iframe"!==o.type)&&t.focus())},preload:function(t){var e=this,n=e.slides[e.currPos+1],o=e.slides[e.currPos-1];n&&n.type===t&&e.loadSlide(n),o&&o.type===t&&e.loadSlide(o)},focus:function(){var t,e=this.current;this.isClosing||e&&e.isComplete&&e.$content&&(t=e.$content.find("input[autofocus]:enabled:visible:first"),t.length||(t=e.$content.find("button,:input,[tabindex],a").filter(":enabled:visible:first")),t=t&&t.length?t:e.$content,t.trigger("focus"))},activate:function(){var t=this;n(".fancybox-container").each(function(){var e=n(this).data("FancyBox");e&&e.id!==t.id&&!e.isClosing&&(e.trigger("onDeactivate"),e.removeEvents(),e.isVisible=!1)}),t.isVisible=!0,(t.current||t.isIdle)&&(t.update(),t.updateControls()),t.trigger("onActivate"),t.addEvents()},close:function(t,e){var o,i,a,s,r,c,l,p=this,h=p.current,g=function(){p.cleanUp(t)};return!p.isClosing&&(p.isClosing=!0,p.trigger("beforeClose",t)===!1?(p.isClosing=!1,d(function(){p.update()}),!1):(p.removeEvents(),h.timouts&&clearTimeout(h.timouts),a=h.$content,o=h.opts.animationEffect,i=n.isNumeric(e)?e:o?h.opts.animationDuration:0,h.$slide.off(u).removeClass("fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated"),h.$slide.siblings().trigger("onReset").remove(),i&&p.$refs.container.removeClass("fancybox-is-open").addClass("fancybox-is-closing"),p.hideLoading(h),p.hideControls(),p.updateCursor(),"zoom"!==o||t!==!0&&a&&i&&"image"===h.type&&!h.hasError&&(l=p.getThumbPos(h))||(o="fade"),"zoom"===o?(n.fancybox.stop(a),s=n.fancybox.getTranslate(a),c={top:s.top,left:s.left,scaleX:s.width/l.width,scaleY:s.height/l.height,width:l.width,height:l.height},r=h.opts.zoomOpacity,"auto"==r&&(r=Math.abs(h.width/h.height-l.width/l.height)>.1),r&&(l.opacity=0),n.fancybox.setTranslate(a,c),f(a),n.fancybox.animate(a,l,i,g),!0):(o&&i?t===!0?setTimeout(g,i):n.fancybox.animate(h.$slide.removeClass("fancybox-slide--current"),"fancybox-animated fancybox-slide--previous fancybox-fx-"+o,i,g):g(),!0)))},cleanUp:function(t){var e,o=this,i=n("body");o.current.$slide.trigger("onReset"),o.$refs.container.empty().remove(),o.trigger("afterClose",t),o.$lastFocus&&o.current.opts.backFocus&&o.$lastFocus.trigger("focus"),o.current=null,e=n.fancybox.getInstance(),e?e.activate():(i.removeClass("fancybox-active compensate-for-scrollbar"),n("#fancybox-style-noscroll").remove())},trigger:function(t,e){var o,i=Array.prototype.slice.call(arguments,1),a=this,s=e&&e.opts?e:a.current;return s?i.unshift(s):s=a,i.unshift(a),n.isFunction(s.opts[t])&&(o=s.opts[t].apply(s,i)),o===!1?o:void("afterClose"!==t&&a.$refs?a.$refs.container.trigger(t+".fb",i):r.trigger(t+".fb",i))},updateControls:function(t){var e=this,n=e.current,o=n.index,i=n.opts.caption,a=e.$refs.container,s=e.$refs.caption;n.$slide.trigger("refresh"),e.$caption=i&&i.length?s.html(i):null,e.isHiddenControls||e.isIdle||e.showControls(),a.find("[data-fancybox-count]").html(e.group.length),a.find("[data-fancybox-index]").html(o+1),a.find("[data-fancybox-prev]").toggleClass("disabled",!n.opts.loop&&o<=0),a.find("[data-fancybox-next]").toggleClass("disabled",!n.opts.loop&&o>=e.group.length-1),"image"===n.type?a.find("[data-fancybox-zoom]").show().end().find("[data-fancybox-download]").attr("href",n.opts.image.src||n.src).show():n.opts.toolbar&&a.find("[data-fancybox-download],[data-fancybox-zoom]").hide()},hideControls:function(){this.isHiddenControls=!0,this.$refs.container.removeClass("fancybox-show-infobar fancybox-show-toolbar fancybox-show-caption fancybox-show-nav")},showControls:function(){var t=this,e=t.current?t.current.opts:t.opts,n=t.$refs.container;t.isHiddenControls=!1,t.idleSecondsCounter=0,n.toggleClass("fancybox-show-toolbar",!(!e.toolbar||!e.buttons)).toggleClass("fancybox-show-infobar",!!(e.infobar&&t.group.length>1)).toggleClass("fancybox-show-nav",!!(e.arrows&&t.group.length>1)).toggleClass("fancybox-is-modal",!!e.modal),t.$caption?n.addClass("fancybox-show-caption "):n.removeClass("fancybox-show-caption")},toggleControls:function(){this.isHiddenControls?this.showControls():this.hideControls()}}),n.fancybox={version:"3.3.5",defaults:a,getInstance:function(t){var e=n('.fancybox-container:not(".fancybox-is-closing"):last').data("FancyBox"),o=Array.prototype.slice.call(arguments,1);return e instanceof h&&("string"===n.type(t)?e[t].apply(e,o):"function"===n.type(t)&&t.apply(e,o),e)},open:function(t,e,n){return new h(t,e,n)},close:function(t){var e=this.getInstance();e&&(e.close(),t===!0&&this.close())},destroy:function(){this.close(!0),r.add("body").off("click.fb-start","**")},isMobile:e.createTouch!==o&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),use3d:function(){var n=e.createElement("div");return t.getComputedStyle&&t.getComputedStyle(n)&&t.getComputedStyle(n).getPropertyValue("transform")&&!(e.documentMode&&e.documentMode<11)}(),getTranslate:function(t){var e;return!(!t||!t.length)&&(e=t[0].getBoundingClientRect(),{top:e.top||0,left:e.left||0,width:e.width,height:e.height,opacity:parseFloat(t.css("opacity"))})},setTranslate:function(t,e){var n="",i={};if(t&&e)return e.left===o&&e.top===o||(n=(e.left===o?t.position().left:e.left)+"px, "+(e.top===o?t.position().top:e.top)+"px",n=this.use3d?"translate3d("+n+", 0px)":"translate("+n+")"),e.scaleX!==o&&e.scaleY!==o&&(n=(n.length?n+" ":"")+"scale("+e.scaleX+", "+e.scaleY+")"),n.length&&(i.transform=n),e.opacity!==o&&(i.opacity=e.opacity),e.width!==o&&(i.width=e.width),e.height!==o&&(i.height=e.height),t.css(i)},animate:function(t,e,i,a,s){var r=!1;n.isFunction(i)&&(a=i,i=null),n.isPlainObject(e)||t.removeAttr("style"),n.fancybox.stop(t),t.on(u,function(o){(!o||!o.originalEvent||t.is(o.originalEvent.target)&&"z-index"!=o.originalEvent.propertyName)&&(n.fancybox.stop(t),r&&n.fancybox.setTranslate(t,r),
|
12 |
+
n.isPlainObject(e)?s===!1&&t.removeAttr("style"):s!==!0&&t.removeClass(e),n.isFunction(a)&&a(o))}),n.isNumeric(i)&&t.css("transition-duration",i+"ms"),n.isPlainObject(e)?(e.scaleX!==o&&e.scaleY!==o&&(r=n.extend({},e,{width:t.width()*e.scaleX,height:t.height()*e.scaleY,scaleX:1,scaleY:1}),delete e.width,delete e.height,t.parent().hasClass("fancybox-slide--image")&&t.parent().addClass("fancybox-is-scaling")),n.fancybox.setTranslate(t,e)):t.addClass(e),t.data("timer",setTimeout(function(){t.trigger("transitionend")},i+16))},stop:function(t){t&&t.length&&(clearTimeout(t.data("timer")),t.off("transitionend").css("transition-duration",""),t.parent().removeClass("fancybox-is-scaling"))}},n.fn.fancybox=function(t){var e;return t=t||{},e=t.selector||!1,e?n("body").off("click.fb-start",e).on("click.fb-start",e,{options:t},i):this.off("click.fb-start").on("click.fb-start",{items:this,options:t},i),this},r.on("click.fb-start","[data-fancybox]",i),r.on("click.fb-start","[data-trigger]",function(t){i(t,{$target:n('[data-fancybox="'+n(t.currentTarget).attr("data-trigger")+'"]').eq(n(t.currentTarget).attr("data-index")||0),$trigger:n(this)})})}}(window,document,window.jQuery||jQuery),function(t){"use strict";var e=function(e,n,o){if(e)return o=o||"","object"===t.type(o)&&(o=t.param(o,!0)),t.each(n,function(t,n){e=e.replace("$"+t,n||"")}),o.length&&(e+=(e.indexOf("?")>0?"&":"?")+o),e},n={youtube:{matcher:/(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i,params:{autoplay:1,autohide:1,fs:1,rel:0,hd:1,wmode:"transparent",enablejsapi:1,html5:1},paramPlace:8,type:"iframe",url:"//www.youtube.com/embed/$4",thumb:"//img.youtube.com/vi/$4/hqdefault.jpg"},vimeo:{matcher:/^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/,params:{autoplay:1,hd:1,show_title:1,show_byline:1,show_portrait:0,fullscreen:1,api:1},paramPlace:3,type:"iframe",url:"//player.vimeo.com/video/$2"},instagram:{matcher:/(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,type:"image",url:"//$1/p/$2/media/?size=l"},gmap_place:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/?ll="+(t[9]?t[9]+"&z="+Math.floor(t[10])+(t[12]?t[12].replace(/^\//,"&"):""):t[12]+"").replace(/\?/,"&")+"&output="+(t[12]&&t[12].indexOf("layer=c")>0?"svembed":"embed")}},gmap_search:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/maps?q="+t[5].replace("query=","q=").replace("api=1","")+"&output=embed"}}};t(document).on("objectNeedsType.fb",function(o,i,a){var s,r,c,l,d,u,f,p=a.src||"",h=!1;s=t.extend(!0,{},n,a.opts.media),t.each(s,function(n,o){if(c=p.match(o.matcher)){if(h=o.type,f=n,u={},o.paramPlace&&c[o.paramPlace]){d=c[o.paramPlace],"?"==d[0]&&(d=d.substring(1)),d=d.split("&");for(var i=0;i<d.length;++i){var s=d[i].split("=",2);2==s.length&&(u[s[0]]=decodeURIComponent(s[1].replace(/\+/g," ")))}}return l=t.extend(!0,{},o.params,a.opts[n],u),p="function"===t.type(o.url)?o.url.call(this,c,l,a):e(o.url,c,l),r="function"===t.type(o.thumb)?o.thumb.call(this,c,l,a):e(o.thumb,c),"youtube"===n?p=p.replace(/&t=((\d+)m)?(\d+)s/,function(t,e,n,o){return"&start="+((n?60*parseInt(n,10):0)+parseInt(o,10))}):"vimeo"===n&&(p=p.replace("&%23","#")),!1}}),h?(a.opts.thumb||a.opts.$thumb&&a.opts.$thumb.length||(a.opts.thumb=r),"iframe"===h&&(a.opts=t.extend(!0,a.opts,{iframe:{preload:!1,attr:{scrolling:"no"}}})),t.extend(a,{type:h,src:p,origSrc:a.src,contentSource:f,contentType:"image"===h?"image":"gmap_place"==f||"gmap_search"==f?"map":"video"})):p&&(a.type=a.opts.defaultType)})}(window.jQuery||jQuery),function(t,e,n){"use strict";var o=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),i=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),a=function(e){var n=[];e=e.originalEvent||e||t.e,e=e.touches&&e.touches.length?e.touches:e.changedTouches&&e.changedTouches.length?e.changedTouches:[e];for(var o in e)e[o].pageX?n.push({x:e[o].pageX,y:e[o].pageY}):e[o].clientX&&n.push({x:e[o].clientX,y:e[o].clientY});return n},s=function(t,e,n){return e&&t?"x"===n?t.x-e.x:"y"===n?t.y-e.y:Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)):0},r=function(t){if(t.is('a,area,button,[role="button"],input,label,select,summary,textarea,video,audio')||n.isFunction(t.get(0).onclick)||t.data("selectable"))return!0;for(var e=0,o=t[0].attributes,i=o.length;e<i;e++)if("data-fancybox-"===o[e].nodeName.substr(0,14))return!0;return!1},c=function(e){var n=t.getComputedStyle(e)["overflow-y"],o=t.getComputedStyle(e)["overflow-x"],i=("scroll"===n||"auto"===n)&&e.scrollHeight>e.clientHeight,a=("scroll"===o||"auto"===o)&&e.scrollWidth>e.clientWidth;return i||a},l=function(t){for(var e=!1;;){if(e=c(t.get(0)))break;if(t=t.parent(),!t.length||t.hasClass("fancybox-stage")||t.is("body"))break}return e},d=function(t){var e=this;e.instance=t,e.$bg=t.$refs.bg,e.$stage=t.$refs.stage,e.$container=t.$refs.container,e.destroy(),e.$container.on("touchstart.fb.touch mousedown.fb.touch",n.proxy(e,"ontouchstart"))};d.prototype.destroy=function(){this.$container.off(".fb.touch")},d.prototype.ontouchstart=function(o){var i=this,c=n(o.target),d=i.instance,u=d.current,f=u.$content,p="touchstart"==o.type;if(p&&i.$container.off("mousedown.fb.touch"),(!o.originalEvent||2!=o.originalEvent.button)&&c.length&&!r(c)&&!r(c.parent())&&(c.is("img")||!(o.originalEvent.clientX>c[0].clientWidth+c.offset().left))){if(!u||d.isAnimating||d.isClosing)return o.stopPropagation(),void o.preventDefault();if(i.realPoints=i.startPoints=a(o),i.startPoints.length){if(o.stopPropagation(),i.startEvent=o,i.canTap=!0,i.$target=c,i.$content=f,i.opts=u.opts.touch,i.isPanning=!1,i.isSwiping=!1,i.isZooming=!1,i.isScrolling=!1,i.startTime=(new Date).getTime(),i.distanceX=i.distanceY=i.distance=0,i.canvasWidth=Math.round(u.$slide[0].clientWidth),i.canvasHeight=Math.round(u.$slide[0].clientHeight),i.contentLastPos=null,i.contentStartPos=n.fancybox.getTranslate(i.$content)||{top:0,left:0},i.sliderStartPos=i.sliderLastPos||n.fancybox.getTranslate(u.$slide),i.stagePos=n.fancybox.getTranslate(d.$refs.stage),i.sliderStartPos.top-=i.stagePos.top,i.sliderStartPos.left-=i.stagePos.left,i.contentStartPos.top-=i.stagePos.top,i.contentStartPos.left-=i.stagePos.left,n(e).off(".fb.touch").on(p?"touchend.fb.touch touchcancel.fb.touch":"mouseup.fb.touch mouseleave.fb.touch",n.proxy(i,"ontouchend")).on(p?"touchmove.fb.touch":"mousemove.fb.touch",n.proxy(i,"ontouchmove")),n.fancybox.isMobile&&e.addEventListener("scroll",i.onscroll,!0),!i.opts&&!d.canPan()||!c.is(i.$stage)&&!i.$stage.find(c).length)return void(c.is(".fancybox-image")&&o.preventDefault());n.fancybox.isMobile&&(l(c)||l(c.parent()))||o.preventDefault(),(1===i.startPoints.length||u.hasError)&&(i.instance.canPan()?(n.fancybox.stop(i.$content),i.$content.css("transition-duration",""),i.isPanning=!0):i.isSwiping=!0,i.$container.addClass("fancybox-controls--isGrabbing")),2===i.startPoints.length&&"image"===u.type&&(u.isLoaded||u.$ghost)&&(i.canTap=!1,i.isSwiping=!1,i.isPanning=!1,i.isZooming=!0,n.fancybox.stop(i.$content),i.$content.css("transition-duration",""),i.centerPointStartX=.5*(i.startPoints[0].x+i.startPoints[1].x)-n(t).scrollLeft(),i.centerPointStartY=.5*(i.startPoints[0].y+i.startPoints[1].y)-n(t).scrollTop(),i.percentageOfImageAtPinchPointX=(i.centerPointStartX-i.contentStartPos.left)/i.contentStartPos.width,i.percentageOfImageAtPinchPointY=(i.centerPointStartY-i.contentStartPos.top)/i.contentStartPos.height,i.startDistanceBetweenFingers=s(i.startPoints[0],i.startPoints[1]))}}},d.prototype.onscroll=function(t){var n=this;n.isScrolling=!0,e.removeEventListener("scroll",n.onscroll,!0)},d.prototype.ontouchmove=function(t){var e=this,o=n(t.target);return void 0!==t.originalEvent.buttons&&0===t.originalEvent.buttons?void e.ontouchend(t):e.isScrolling||!o.is(e.$stage)&&!e.$stage.find(o).length?void(e.canTap=!1):(e.newPoints=a(t),void((e.opts||e.instance.canPan())&&e.newPoints.length&&e.newPoints.length&&(e.isSwiping&&e.isSwiping===!0||t.preventDefault(),e.distanceX=s(e.newPoints[0],e.startPoints[0],"x"),e.distanceY=s(e.newPoints[0],e.startPoints[0],"y"),e.distance=s(e.newPoints[0],e.startPoints[0]),e.distance>0&&(e.isSwiping?e.onSwipe(t):e.isPanning?e.onPan():e.isZooming&&e.onZoom()))))},d.prototype.onSwipe=function(e){var a,s=this,r=s.isSwiping,c=s.sliderStartPos.left||0;if(r!==!0)"x"==r&&(s.distanceX>0&&(s.instance.group.length<2||0===s.instance.current.index&&!s.instance.current.opts.loop)?c+=Math.pow(s.distanceX,.8):s.distanceX<0&&(s.instance.group.length<2||s.instance.current.index===s.instance.group.length-1&&!s.instance.current.opts.loop)?c-=Math.pow(-s.distanceX,.8):c+=s.distanceX),s.sliderLastPos={top:"x"==r?0:s.sliderStartPos.top+s.distanceY,left:c},s.requestId&&(i(s.requestId),s.requestId=null),s.requestId=o(function(){s.sliderLastPos&&(n.each(s.instance.slides,function(t,e){var o=e.pos-s.instance.currPos;n.fancybox.setTranslate(e.$slide,{top:s.sliderLastPos.top,left:s.sliderLastPos.left+o*s.canvasWidth+o*e.opts.gutter})}),s.$container.addClass("fancybox-is-sliding"))});else if(Math.abs(s.distance)>10){if(s.canTap=!1,s.instance.group.length<2&&s.opts.vertical?s.isSwiping="y":s.instance.isDragging||s.opts.vertical===!1||"auto"===s.opts.vertical&&n(t).width()>800?s.isSwiping="x":(a=Math.abs(180*Math.atan2(s.distanceY,s.distanceX)/Math.PI),s.isSwiping=a>45&&a<135?"y":"x"),s.canTap=!1,"y"===s.isSwiping&&n.fancybox.isMobile&&(l(s.$target)||l(s.$target.parent())))return void(s.isScrolling=!0);s.instance.isDragging=s.isSwiping,s.startPoints=s.newPoints,n.each(s.instance.slides,function(t,e){n.fancybox.stop(e.$slide),e.$slide.css("transition-duration",""),e.inTransition=!1,e.pos===s.instance.current.pos&&(s.sliderStartPos.left=n.fancybox.getTranslate(e.$slide).left-n.fancybox.getTranslate(s.instance.$refs.stage).left)}),s.instance.SlideShow&&s.instance.SlideShow.isActive&&s.instance.SlideShow.stop()}},d.prototype.onPan=function(){var t=this;return s(t.newPoints[0],t.realPoints[0])<(n.fancybox.isMobile?10:5)?void(t.startPoints=t.newPoints):(t.canTap=!1,t.contentLastPos=t.limitMovement(),t.requestId&&(i(t.requestId),t.requestId=null),void(t.requestId=o(function(){n.fancybox.setTranslate(t.$content,t.contentLastPos)})))},d.prototype.limitMovement=function(){var t,e,n,o,i,a,s=this,r=s.canvasWidth,c=s.canvasHeight,l=s.distanceX,d=s.distanceY,u=s.contentStartPos,f=u.left,p=u.top,h=u.width,g=u.height;return i=h>r?f+l:f,a=p+d,t=Math.max(0,.5*r-.5*h),e=Math.max(0,.5*c-.5*g),n=Math.min(r-h,.5*r-.5*h),o=Math.min(c-g,.5*c-.5*g),l>0&&i>t&&(i=t-1+Math.pow(-t+f+l,.8)||0),l<0&&i<n&&(i=n+1-Math.pow(n-f-l,.8)||0),d>0&&a>e&&(a=e-1+Math.pow(-e+p+d,.8)||0),d<0&&a<o&&(a=o+1-Math.pow(o-p-d,.8)||0),{top:a,left:i}},d.prototype.limitPosition=function(t,e,n,o){var i=this,a=i.canvasWidth,s=i.canvasHeight;return n>a?(t=t>0?0:t,t=t<a-n?a-n:t):t=Math.max(0,a/2-n/2),o>s?(e=e>0?0:e,e=e<s-o?s-o:e):e=Math.max(0,s/2-o/2),{top:e,left:t}},d.prototype.onZoom=function(){var e=this,a=e.contentStartPos,r=a.width,c=a.height,l=a.left,d=a.top,u=s(e.newPoints[0],e.newPoints[1]),f=u/e.startDistanceBetweenFingers,p=Math.floor(r*f),h=Math.floor(c*f),g=(r-p)*e.percentageOfImageAtPinchPointX,b=(c-h)*e.percentageOfImageAtPinchPointY,m=(e.newPoints[0].x+e.newPoints[1].x)/2-n(t).scrollLeft(),y=(e.newPoints[0].y+e.newPoints[1].y)/2-n(t).scrollTop(),v=m-e.centerPointStartX,x=y-e.centerPointStartY,w=l+(g+v),$=d+(b+x),S={top:$,left:w,scaleX:f,scaleY:f};e.canTap=!1,e.newWidth=p,e.newHeight=h,e.contentLastPos=S,e.requestId&&(i(e.requestId),e.requestId=null),e.requestId=o(function(){n.fancybox.setTranslate(e.$content,e.contentLastPos)})},d.prototype.ontouchend=function(t){var o=this,s=Math.max((new Date).getTime()-o.startTime,1),r=o.isSwiping,c=o.isPanning,l=o.isZooming,d=o.isScrolling;return o.endPoints=a(t),o.$container.removeClass("fancybox-controls--isGrabbing"),n(e).off(".fb.touch"),e.removeEventListener("scroll",o.onscroll,!0),o.requestId&&(i(o.requestId),o.requestId=null),o.isSwiping=!1,o.isPanning=!1,o.isZooming=!1,o.isScrolling=!1,o.instance.isDragging=!1,o.canTap?o.onTap(t):(o.speed=366,o.velocityX=o.distanceX/s*.5,o.velocityY=o.distanceY/s*.5,o.speedX=Math.max(.5*o.speed,Math.min(1.5*o.speed,1/Math.abs(o.velocityX)*o.speed)),void(c?o.endPanning():l?o.endZooming():o.endSwiping(r,d)))},d.prototype.endSwiping=function(t,e){var o=this,i=!1,a=o.instance.group.length;o.sliderLastPos=null,"y"==t&&!e&&Math.abs(o.distanceY)>50?(n.fancybox.animate(o.instance.current.$slide,{top:o.sliderStartPos.top+o.distanceY+150*o.velocityY,opacity:0},200),i=o.instance.close(!0,200)):"x"==t&&o.distanceX>50&&a>1?i=o.instance.previous(o.speedX):"x"==t&&o.distanceX<-50&&a>1&&(i=o.instance.next(o.speedX)),i!==!1||"x"!=t&&"y"!=t||(e||a<2?o.instance.centerSlide(o.instance.current,150):o.instance.jumpTo(o.instance.current.index)),o.$container.removeClass("fancybox-is-sliding")},d.prototype.endPanning=function(){var t,e,o,i=this;i.contentLastPos&&(i.opts.momentum===!1?(t=i.contentLastPos.left,e=i.contentLastPos.top):(t=i.contentLastPos.left+i.velocityX*i.speed,e=i.contentLastPos.top+i.velocityY*i.speed),o=i.limitPosition(t,e,i.contentStartPos.width,i.contentStartPos.height),o.width=i.contentStartPos.width,o.height=i.contentStartPos.height,n.fancybox.animate(i.$content,o,330))},d.prototype.endZooming=function(){var t,e,o,i,a=this,s=a.instance.current,r=a.newWidth,c=a.newHeight;a.contentLastPos&&(t=a.contentLastPos.left,e=a.contentLastPos.top,i={top:e,left:t,width:r,height:c,scaleX:1,scaleY:1},n.fancybox.setTranslate(a.$content,i),r<a.canvasWidth&&c<a.canvasHeight?a.instance.scaleToFit(150):r>s.width||c>s.height?a.instance.scaleToActual(a.centerPointStartX,a.centerPointStartY,150):(o=a.limitPosition(t,e,r,c),n.fancybox.setTranslate(a.$content,n.fancybox.getTranslate(a.$content)),n.fancybox.animate(a.$content,o,150)))},d.prototype.onTap=function(e){var o,i=this,s=n(e.target),r=i.instance,c=r.current,l=e&&a(e)||i.startPoints,d=l[0]?l[0].x-n(t).scrollLeft()-i.stagePos.left:0,u=l[0]?l[0].y-n(t).scrollTop()-i.stagePos.top:0,f=function(t){var o=c.opts[t];if(n.isFunction(o)&&(o=o.apply(r,[c,e])),o)switch(o){case"close":r.close(i.startEvent);break;case"toggleControls":r.toggleControls(!0);break;case"next":r.next();break;case"nextOrClose":r.group.length>1?r.next():r.close(i.startEvent);break;case"zoom":"image"==c.type&&(c.isLoaded||c.$ghost)&&(r.canPan()?r.scaleToFit():r.isScaledDown()?r.scaleToActual(d,u):r.group.length<2&&r.close(i.startEvent))}};if((!e.originalEvent||2!=e.originalEvent.button)&&(s.is("img")||!(d>s[0].clientWidth+s.offset().left))){if(s.is(".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container"))o="Outside";else if(s.is(".fancybox-slide"))o="Slide";else{if(!r.current.$content||!r.current.$content.find(s).addBack().filter(s).length)return;o="Content"}if(i.tapped){if(clearTimeout(i.tapped),i.tapped=null,Math.abs(d-i.tapX)>50||Math.abs(u-i.tapY)>50)return this;f("dblclick"+o)}else i.tapX=d,i.tapY=u,c.opts["dblclick"+o]&&c.opts["dblclick"+o]!==c.opts["click"+o]?i.tapped=setTimeout(function(){i.tapped=null,f("click"+o)},500):f("click"+o);return this}},n(e).on("onActivate.fb",function(t,e){e&&!e.Guestures&&(e.Guestures=new d(e))})}(window,document,window.jQuery||jQuery),function(t,e){"use strict";e.extend(!0,e.fancybox.defaults,{btnTpl:{slideShow:'<button data-fancybox-play class="fancybox-button fancybox-button--play" title="{{PLAY_START}}"><svg viewBox="0 0 40 40"><path d="M13,12 L27,20 L13,27 Z" /><path d="M15,10 v19 M23,10 v19" /></svg></button>'},slideShow:{autoStart:!1,speed:3e3}});var n=function(t){this.instance=t,this.init()};e.extend(n.prototype,{timer:null,isActive:!1,$button:null,init:function(){var t=this;t.$button=t.instance.$refs.toolbar.find("[data-fancybox-play]").on("click",function(){t.toggle()}),(t.instance.group.length<2||!t.instance.group[t.instance.currIndex].opts.slideShow)&&t.$button.hide()},set:function(t){var e=this;e.instance&&e.instance.current&&(t===!0||e.instance.current.opts.loop||e.instance.currIndex<e.instance.group.length-1)?e.timer=setTimeout(function(){e.isActive&&e.instance.jumpTo((e.instance.currIndex+1)%e.instance.group.length)},e.instance.current.opts.slideShow.speed):(e.stop(),e.instance.idleSecondsCounter=0,e.instance.showControls())},clear:function(){var t=this;clearTimeout(t.timer),t.timer=null},start:function(){var t=this,e=t.instance.current;e&&(t.isActive=!0,t.$button.attr("title",e.opts.i18n[e.opts.lang].PLAY_STOP).removeClass("fancybox-button--play").addClass("fancybox-button--pause"),t.set(!0))},stop:function(){var t=this,e=t.instance.current;t.clear(),t.$button.attr("title",e.opts.i18n[e.opts.lang].PLAY_START).removeClass("fancybox-button--pause").addClass("fancybox-button--play"),t.isActive=!1},toggle:function(){var t=this;t.isActive?t.stop():t.start()}}),e(t).on({"onInit.fb":function(t,e){e&&!e.SlideShow&&(e.SlideShow=new n(e))},"beforeShow.fb":function(t,e,n,o){var i=e&&e.SlideShow;o?i&&n.opts.slideShow.autoStart&&i.start():i&&i.isActive&&i.clear()},"afterShow.fb":function(t,e,n){var o=e&&e.SlideShow;o&&o.isActive&&o.set()},"afterKeydown.fb":function(n,o,i,a,s){var r=o&&o.SlideShow;!r||!i.opts.slideShow||80!==s&&32!==s||e(t.activeElement).is("button,a,input")||(a.preventDefault(),r.toggle())},"beforeClose.fb onDeactivate.fb":function(t,e){var n=e&&e.SlideShow;n&&n.stop()}}),e(t).on("visibilitychange",function(){var n=e.fancybox.getInstance(),o=n&&n.SlideShow;o&&o.isActive&&(t.hidden?o.clear():o.set())})}(document,window.jQuery||jQuery),function(t,e){"use strict";var n=function(){for(var e=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],n={},o=0;o<e.length;o++){var i=e[o];if(i&&i[1]in t){for(var a=0;a<i.length;a++)n[e[0][a]]=i[a];return n}}return!1}();if(!n)return void(e&&e.fancybox&&(e.fancybox.defaults.btnTpl.fullScreen=!1));var o={request:function(e){e=e||t.documentElement,e[n.requestFullscreen](e.ALLOW_KEYBOARD_INPUT)},exit:function(){t[n.exitFullscreen]()},toggle:function(e){e=e||t.documentElement,this.isFullscreen()?this.exit():this.request(e)},isFullscreen:function(){return Boolean(t[n.fullscreenElement])},enabled:function(){return Boolean(t[n.fullscreenEnabled])}};e.extend(!0,e.fancybox.defaults,{btnTpl:{fullScreen:'<button data-fancybox-fullscreen class="fancybox-button fancybox-button--fullscreen" title="{{FULL_SCREEN}}"><svg viewBox="0 0 40 40"><path d="M9,12 v16 h22 v-16 h-22 v8" /></svg></button>'},fullScreen:{autoStart:!1}}),e(t).on({"onInit.fb":function(t,e){var n;e&&e.group[e.currIndex].opts.fullScreen?(n=e.$refs.container,n.on("click.fb-fullscreen","[data-fancybox-fullscreen]",function(t){t.stopPropagation(),t.preventDefault(),o.toggle()}),e.opts.fullScreen&&e.opts.fullScreen.autoStart===!0&&o.request(),e.FullScreen=o):e&&e.$refs.toolbar.find("[data-fancybox-fullscreen]").hide()},"afterKeydown.fb":function(t,e,n,o,i){e&&e.FullScreen&&70===i&&(o.preventDefault(),e.FullScreen.toggle())},"beforeClose.fb":function(t,e){e&&e.FullScreen&&e.$refs.container.hasClass("fancybox-is-fullscreen")&&o.exit()}}),e(t).on(n.fullscreenchange,function(){var t=o.isFullscreen(),n=e.fancybox.getInstance();n&&(n.current&&"image"===n.current.type&&n.isAnimating&&(n.current.$content.css("transition","none"),n.isAnimating=!1,n.update(!0,!0,0)),n.trigger("onFullscreenChange",t),n.$refs.container.toggleClass("fancybox-is-fullscreen",t))})}(document,window.jQuery||jQuery),function(t,e){"use strict";var n="fancybox-thumbs",o=n+"-active",i=n+"-loading";e.fancybox.defaults=e.extend(!0,{btnTpl:{thumbs:'<button data-fancybox-thumbs class="fancybox-button fancybox-button--thumbs" title="{{THUMBS}}"><svg viewBox="0 0 120 120"><path d="M30,30 h14 v14 h-14 Z M50,30 h14 v14 h-14 Z M70,30 h14 v14 h-14 Z M30,50 h14 v14 h-14 Z M50,50 h14 v14 h-14 Z M70,50 h14 v14 h-14 Z M30,70 h14 v14 h-14 Z M50,70 h14 v14 h-14 Z M70,70 h14 v14 h-14 Z" /></svg></button>'},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"}},e.fancybox.defaults);var a=function(t){this.init(t)};e.extend(a.prototype,{$button:null,$grid:null,$list:null,isVisible:!1,isActive:!1,init:function(t){var e,n,o=this;o.instance=t,t.Thumbs=o,o.opts=t.group[t.currIndex].opts.thumbs,e=t.group[0],e=e.opts.thumb||!(!e.opts.$thumb||!e.opts.$thumb.length)&&e.opts.$thumb.attr("src"),t.group.length>1&&(n=t.group[1],n=n.opts.thumb||!(!n.opts.$thumb||!n.opts.$thumb.length)&&n.opts.$thumb.attr("src")),o.$button=t.$refs.toolbar.find("[data-fancybox-thumbs]"),o.opts&&e&&n&&e&&n?(o.$button.show().on("click",function(){o.toggle()}),o.isActive=!0):o.$button.hide()},create:function(){var t,o=this,a=o.instance,s=o.opts.parentEl,r=[];o.$grid||(o.$grid=e('<div class="'+n+" "+n+"-"+o.opts.axis+'"></div>').appendTo(a.$refs.container.find(s).addBack().filter(s)),o.$grid.on("click","li",function(){a.jumpTo(e(this).attr("data-index"))})),o.$list||(o.$list=e("<ul>").appendTo(o.$grid)),e.each(a.group,function(e,n){t=n.opts.thumb||(n.opts.$thumb?n.opts.$thumb.attr("src"):null),t||"image"!==n.type||(t=n.src),r.push('<li data-index="'+e+'" tabindex="0" class="'+i+'"'+(t&&t.length?' style="background-image:url('+t+')" />':"")+"></li>")}),o.$list[0].innerHTML=r.join(""),"x"===o.opts.axis&&o.$list.width(parseInt(o.$grid.css("padding-right"),10)+a.group.length*o.$list.children().eq(0).outerWidth(!0))},focus:function(t){var e,n,i=this,a=i.$list,s=i.$grid;i.instance.current&&(e=a.children().removeClass(o).filter('[data-index="'+i.instance.current.index+'"]').addClass(o),n=e.position(),"y"===i.opts.axis&&(n.top<0||n.top>a.height()-e.outerHeight())?a.stop().animate({scrollTop:a.scrollTop()+n.top},t):"x"===i.opts.axis&&(n.left<s.scrollLeft()||n.left>s.scrollLeft()+(s.width()-e.outerWidth()))&&a.parent().stop().animate({scrollLeft:n.left},t))},update:function(){var t=this;t.instance.$refs.container.toggleClass("fancybox-show-thumbs",this.isVisible),t.isVisible?(t.$grid||t.create(),t.instance.trigger("onThumbsShow"),t.focus(0)):t.$grid&&t.instance.trigger("onThumbsHide"),t.instance.update()},hide:function(){this.isVisible=!1,this.update()},show:function(){this.isVisible=!0,this.update()},toggle:function(){this.isVisible=!this.isVisible,this.update()}}),e(t).on({"onInit.fb":function(t,e){var n;e&&!e.Thumbs&&(n=new a(e),n.isActive&&n.opts.autoStart===!0&&n.show())},"beforeShow.fb":function(t,e,n,o){var i=e&&e.Thumbs;i&&i.isVisible&&i.focus(o?0:250)},"afterKeydown.fb":function(t,e,n,o,i){var a=e&&e.Thumbs;a&&a.isActive&&71===i&&(o.preventDefault(),a.toggle())},"beforeClose.fb":function(t,e){var n=e&&e.Thumbs;n&&n.isVisible&&n.opts.hideOnClose!==!1&&n.$grid.hide()}})}(document,window.jQuery||jQuery),function(t,e){"use strict";function n(t){var e={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(t).replace(/[&<>"'`=\/]/g,function(t){return e[t]})}e.extend(!0,e.fancybox.defaults,{btnTpl:{share:'<button data-fancybox-share class="fancybox-button fancybox-button--share" title="{{SHARE}}"><svg viewBox="0 0 40 40"><path d="M6,30 C8,18 19,16 23,16 L23,16 L23,10 L33,20 L23,29 L23,24 C19,24 8,27 6,30 Z"></svg></button>'},share:{url:function(t,e){return!t.currentHash&&"inline"!==e.type&&"html"!==e.type&&(e.origSrc||e.src)||window.location},tpl:'<div class="fancybox-share"><h1>{{SHARE}}</h1><p><a class="fancybox-share__button fancybox-share__button--fb" href="https://www.facebook.com/sharer/sharer.php?u={{url}}"><svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m287 456v-299c0-21 6-35 35-35h38v-63c-7-1-29-3-55-3-54 0-91 33-91 94v306m143-254h-205v72h196" /></svg><span>Facebook</span></a><a class="fancybox-share__button fancybox-share__button--tw" href="https://twitter.com/intent/tweet?url={{url}}&text={{descr}}"><svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m456 133c-14 7-31 11-47 13 17-10 30-27 37-46-15 10-34 16-52 20-61-62-157-7-141 75-68-3-129-35-169-85-22 37-11 86 26 109-13 0-26-4-37-9 0 39 28 72 65 80-12 3-25 4-37 2 10 33 41 57 77 57-42 30-77 38-122 34 170 111 378-32 359-208 16-11 30-25 41-42z" /></svg><span>Twitter</span></a><a class="fancybox-share__button fancybox-share__button--pt" href="https://www.pinterest.com/pin/create/button/?url={{url}}&description={{descr}}&media={{media}}"><svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m265 56c-109 0-164 78-164 144 0 39 15 74 47 87 5 2 10 0 12-5l4-19c2-6 1-8-3-13-9-11-15-25-15-45 0-58 43-110 113-110 62 0 96 38 96 88 0 67-30 122-73 122-24 0-42-19-36-44 6-29 20-60 20-81 0-19-10-35-31-35-25 0-44 26-44 60 0 21 7 36 7 36l-30 125c-8 37-1 83 0 87 0 3 4 4 5 2 2-3 32-39 42-75l16-64c8 16 31 29 56 29 74 0 124-67 124-157 0-69-58-132-146-132z" fill="#fff"/></svg><span>Pinterest</span></a></p><p><input class="fancybox-share__input" type="text" value="{{url_raw}}" /></p></div>'}}),e(t).on("click","[data-fancybox-share]",function(){var t,o,i=e.fancybox.getInstance(),a=i.current||null;a&&("function"===e.type(a.opts.share.url)&&(t=a.opts.share.url.apply(a,[i,a])),o=a.opts.share.tpl.replace(/\{\{media\}\}/g,"image"===a.type?encodeURIComponent(a.src):"").replace(/\{\{url\}\}/g,encodeURIComponent(t)).replace(/\{\{url_raw\}\}/g,n(t)).replace(/\{\{descr\}\}/g,i.$caption?encodeURIComponent(i.$caption.text()):""),e.fancybox.open({src:i.translate(i,o),type:"html",opts:{animationEffect:!1,afterLoad:function(t,e){i.$refs.container.one("beforeClose.fb",function(){t.close(null,0)}),e.$content.find(".fancybox-share__links a").click(function(){return window.open(this.href,"Share","width=550, height=450"),!1})}}}))})}(document,window.jQuery||jQuery),function(t,e,n){"use strict";function o(){var t=e.location.hash.substr(1),n=t.split("-"),o=n.length>1&&/^\+?\d+$/.test(n[n.length-1])?parseInt(n.pop(-1),10)||1:1,i=n.join("-");return{hash:t,index:o<1?1:o,gallery:i}}function i(t){var e;""!==t.gallery&&(e=n("[data-fancybox='"+n.escapeSelector(t.gallery)+"']").eq(t.index-1).trigger("click.fb-start"))}function a(t){var e,n;return!!t&&(e=t.current?t.current.opts:t.opts,n=e.hash||(e.$orig?e.$orig.data("fancybox"):""),""!==n&&n)}n.escapeSelector||(n.escapeSelector=function(t){var e=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,n=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t};return(t+"").replace(e,n)}),n(function(){n.fancybox.defaults.hash!==!1&&(n(t).on({"onInit.fb":function(t,e){var n,i;e.group[e.currIndex].opts.hash!==!1&&(n=o(),i=a(e),i&&n.gallery&&i==n.gallery&&(e.currIndex=n.index-1))},"beforeShow.fb":function(n,o,i,s){var r;i&&i.opts.hash!==!1&&(r=a(o),r&&(o.currentHash=r+(o.group.length>1?"-"+(i.index+1):""),e.location.hash!=="#"+o.currentHash&&(o.origHash||(o.origHash=e.location.hash),o.hashTimer&&clearTimeout(o.hashTimer),o.hashTimer=setTimeout(function(){"replaceState"in e.history?(e.history[s?"pushState":"replaceState"]({},t.title,e.location.pathname+e.location.search+"#"+o.currentHash),s&&(o.hasCreatedHistory=!0)):e.location.hash=o.currentHash,o.hashTimer=null},300))))},"beforeClose.fb":function(n,o,i){var s;i.opts.hash!==!1&&(s=a(o),o.currentHash&&o.hasCreatedHistory?e.history.back():o.currentHash&&("replaceState"in e.history?e.history.replaceState({},t.title,e.location.pathname+e.location.search+(o.origHash||"")):e.location.hash=o.origHash),o.currentHash=null,clearTimeout(o.hashTimer))}}),n(e).on("hashchange.fb",function(){var t,e=o();n.each(n(".fancybox-container").get().reverse(),function(e,o){var i=n(o).data("FancyBox");if(i.currentHash)return t=i,!1}),t?!t.currentHash||t.currentHash===e.gallery+"-"+e.index||1===e.index&&t.currentHash==e.gallery||(t.currentHash=null,t.close()):""!==e.gallery&&i(e)}),setTimeout(function(){n.fancybox.getInstance()||i(o())},50))})}(document,window,window.jQuery||jQuery),function(t,e){"use strict";var n=(new Date).getTime();e(t).on({"onInit.fb":function(t,e,o){e.$refs.stage.on("mousewheel DOMMouseScroll wheel MozMousePixelScroll",function(t){var o=e.current,i=(new Date).getTime();e.group.length<2||o.opts.wheel===!1||"auto"===o.opts.wheel&&"image"!==o.type||(t.preventDefault(),t.stopPropagation(),o.$slide.hasClass("fancybox-animated")||(t=t.originalEvent||t,i-n<250||(n=i,e[(-t.deltaY||-t.deltaX||t.wheelDelta||-t.detail)<0?"next":"previous"]())))})}})}(document,window.jQuery||jQuery);
|
13 |
+
|
14 |
+
function fv_player_colorbox_title() {
|
15 |
+
var that = jQuery(this);
|
16 |
+
if( that.attr('title') && that.attr('title').length > 0 ) return that.attr('title');
|
17 |
+
if( that.find('img') && that.find('img').attr('alt') && that.find('img').attr('alt').length > 0 ) return that.find('img').attr('alt');
|
18 |
+
if( that.parent().is('h5') && that.clone().children().remove().end().text() ) {
|
19 |
+
return that.clone().children().remove().end().text();
|
20 |
+
}
|
21 |
+
if( that.parent().is('h5') && that.parent().clone().children().remove().end().text() ) {
|
22 |
+
return that.parent().clone().children().remove().end().text();
|
23 |
+
}
|
24 |
+
return '';
|
25 |
+
}
|
26 |
+
|
27 |
+
jQuery.fancybox.defaults.smallBtn = false;
|
28 |
+
jQuery.fancybox.defaults.toolbar = true;
|
29 |
+
jQuery.fancybox.defaults.thumbs.hideOnClose = false;
|
30 |
+
jQuery.fancybox.defaults.caption = fv_player_colorbox_title;
|
31 |
+
jQuery.fancybox.defaults.afterLoad = fv_fancybox_check_size;
|
32 |
+
jQuery.fancybox.defaults.onThumbsShow = function() {
|
33 |
+
jQuery(jQuery.fancybox.getInstance().group).each( function(k,v) {
|
34 |
+
if( v.src.match(/^#wpfp_/) ) {
|
35 |
+
jQuery('.fancybox-thumbs li[data-index='+k+']').append('<span class="fv-player-fancybox-play-icon">▶</span>');
|
36 |
+
}
|
37 |
+
if( v.opts.$thumb[0].src.match(/data:image.*?base64/) ) {console.log('no thumb!',jQuery( v.opts.$thumb).data('lazy-src'));
|
38 |
+
jQuery('.fancybox-thumbs li[data-index='+k+']').css('background-image', 'url("'+jQuery( v.opts.$thumb).data('lazy-src')+'")' );
|
39 |
+
}
|
40 |
+
})
|
41 |
+
}
|
42 |
+
jQuery.fancybox.defaults.hash = false;
|
43 |
+
jQuery.fancybox.defaults.buttons = ["slideShow","fullScreen","thumbs","close"];
|
44 |
+
|
45 |
+
jQuery(document).ready(function() {
|
46 |
+
jQuery(".colorbox[href^='#'], .lightbox[href^='#']").filter(function () {
|
47 |
+
return this.href && !this.href.match(/\.(png|jpg|jpeg|gif|webp)/i)
|
48 |
+
}).fancybox();
|
49 |
+
jQuery(".colorbox, .lightbox").filter(function () {
|
50 |
+
return this.href && this.href.match(/\.(png|jpg|jpeg|gif|webp)/i)
|
51 |
+
}).attr('data-fancybox','gallery').fancybox();
|
52 |
+
});
|
53 |
+
|
54 |
+
function fv_fancybox_check_size() {
|
55 |
+
var
|
56 |
+
$player = jQuery('.fancybox-slide--current .flowplayer:visible'),
|
57 |
+
player_height = $player.outerHeight(),
|
58 |
+
$caption = jQuery('.fancybox-caption'),
|
59 |
+
$toolbar = jQuery('.fancybox-toolbar'),
|
60 |
+
$fs_button = $player.find('.fp-fullscreen');
|
61 |
+
|
62 |
+
if ($player.length) {
|
63 |
+
|
64 |
+
if( typeof($player.data('orig-max-height')) == 'undefined' ) {
|
65 |
+
$player.data('orig-max-height', parseInt($player.css('max-height')) ).data('orig-max-width', parseInt($player.css('max-width')) );
|
66 |
+
}
|
67 |
+
|
68 |
+
var height = jQuery(window).height();
|
69 |
+
if( $player.hasClass('fixed-controls') ) height -= $player.find('.fp-controls').height(); // reserve a bit of space for controlbar
|
70 |
+
|
71 |
+
if( height > $player.data('orig-max-height') && jQuery(window).width() > $player.data('orig-max-width') ) { // if the player original dimensions fit, restore original height
|
72 |
+
height = $player.data('orig-max-height');
|
73 |
+
}
|
74 |
+
|
75 |
+
$player
|
76 |
+
.css('max-height', '')
|
77 |
+
.css('max-width', (height/$player.data('ratio'))+'px');
|
78 |
+
|
79 |
+
|
80 |
+
// hide caption if it would cover the player
|
81 |
+
if ($caption.length) {
|
82 |
+
if ( $caption.position().top - 5 < $player.position().top + player_height ) $caption.hide();
|
83 |
+
else $caption.show();
|
84 |
+
}
|
85 |
+
|
86 |
+
// hide FV Player fullscreen button if it would be covered.
|
87 |
+
if ($toolbar.length) {
|
88 |
+
if ( $player.position().top < $toolbar.position().top + $toolbar.height() ) $fs_button.hide();
|
89 |
+
else $fs_button.show();
|
90 |
+
}
|
91 |
+
|
92 |
+
jQuery('.fancybox-button--play').hide();
|
93 |
+
} else {
|
94 |
+
jQuery('.fancybox-button--play').show();
|
95 |
+
}
|
96 |
+
}
|
97 |
+
|
98 |
+
function fv_lightbox_flowplayer_shutdown() {
|
99 |
+
jQuery('.flowplayer').each( function() {
|
100 |
+
var api = jQuery(this).data("flowplayer");
|
101 |
+
if( typeof(api) == "undefined") {
|
102 |
+
return;
|
103 |
+
}
|
104 |
+
if( api.ready ) {
|
105 |
+
api.unload();
|
106 |
+
}
|
107 |
+
if( api.loading ) {
|
108 |
+
api.one('ready',function(){
|
109 |
+
if(api.engine.engineName === 'fvyoutube')
|
110 |
+
api.unload();
|
111 |
+
})
|
112 |
+
}
|
113 |
+
} );
|
114 |
+
}
|
115 |
+
|
116 |
+
jQuery(document).on('afterShow.fb afterClose.fb', fv_lightbox_flowplayer_shutdown);
|
117 |
+
|
118 |
+
jQuery(window).resize(fv_fancybox_check_size);
|
119 |
+
|
120 |
+
if( document.addEventListener ) {
|
121 |
+
var fv_orientation_change_timer = -1;
|
122 |
+
|
123 |
+
window.addEventListener("orientationchange", function() {
|
124 |
+
if (window.fv_orientation_change_timer > -1) {
|
125 |
+
clearTimeout(fv_orientation_change_timer);
|
126 |
+
fv_orientation_change_timer = -1;
|
127 |
+
}
|
128 |
+
|
129 |
+
fv_orientation_change_timer = setTimeout(function() {
|
130 |
+
fv_fancybox_check_size();
|
131 |
+
fv_orientation_change_timer = -1;
|
132 |
+
}, 1000);
|
133 |
+
}, false);
|
134 |
+
}
|
135 |
+
|
136 |
+
// overriding default Flowplayer fullscreen function
|
137 |
+
jQuery(document).on('ready', function() {
|
138 |
+
if( typeof(flowplayer) != "undefined" ) {
|
139 |
+
flowplayer( function(api,root) {
|
140 |
+
if( jQuery(root).parents('.fv_player_lightbox_hidden').length ) {
|
141 |
+
if( flowplayer.support.fullscreen ) { // todo: should also work for YouTube on desktop
|
142 |
+
api.fullscreen = function() {
|
143 |
+
jQuery.fancybox.getInstance().FullScreen.toggle();
|
144 |
+
};
|
145 |
+
} else {
|
146 |
+
var fancybox_ui = '.fancybox-caption, .fancybox-toolbar, .fancybox-infobar, .fancybox-navigation';
|
147 |
+
var fancybox_thumbs = false;
|
148 |
+
api.on('fullscreen', function() {
|
149 |
+
jQuery(fancybox_ui).hide();
|
150 |
+
fancybox_thumbs = jQuery('.fancybox-container').hasClass('fancybox-show-thumbs')
|
151 |
+
jQuery('.fancybox-container').removeClass('fancybox-show-thumbs');
|
152 |
+
}).on('fullscreen-exit', function() {
|
153 |
+
jQuery(fancybox_ui).show();
|
154 |
+
if( fancybox_thumbs ) jQuery('.fancybox-container').addClass('fancybox-show-thumbs');
|
155 |
+
});
|
156 |
+
}
|
157 |
+
}
|
158 |
+
});
|
159 |
+
}
|
160 |
+
});
|
161 |
+
|
162 |
+
jQuery(document).on('webkitfullscreenchange mozfullscreenchange fullscreenchange', function() {
|
163 |
+
fv_fancybox_check_size();
|
164 |
+
});
|
165 |
+
|
166 |
+
jQuery(document).ready(fv_player_lightbox_bind);
|
167 |
+
jQuery(document).ajaxComplete(fv_player_lightbox_bind);
|
168 |
+
|
169 |
+
function fv_player_lightbox_bind(){
|
170 |
+
|
171 |
+
jQuery(".flowplayer.lightbox-starter").each( function() {
|
172 |
+
var player = jQuery(this);
|
173 |
+
if( parseInt(player.css('width')) < 10 || parseInt(player.css('height')) < 10 ) {
|
174 |
+
//if (!parseInt(origRatio, 10))
|
175 |
+
var ratio = jQuery('.fp-ratio', player);
|
176 |
+
if( ratio.length < 1){
|
177 |
+
player.append('<div class="fp-ratio"></div>');
|
178 |
+
ratio = jQuery('.fp-ratio', player);
|
179 |
+
}
|
180 |
+
ratio.css("paddingTop", player.data('ratio') * 100 + "%");
|
181 |
+
}
|
182 |
+
var PLAY_ROUNDED_OUTLINE = "PHN2ZyBjbGFzcz0iZnAtcGxheS1yb3VuZGVkLW91dGxpbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDk5Ljg0NCA5OS44NDM0Ij48ZGVmcz48c3R5bGU+LmZwLWNvbG9yLXBsYXl7b3BhY2l0eTowLjY1O30uY29udHJvbGJ1dHRvbntmaWxsOiNmZmY7fTwvc3R5bGU+CjwvZGVmcz4KPHRpdGxlPnBsYXktcm91bmRlZC1vdXRsaW5lPC90aXRsZT48cGF0aCBjbGFzcz0iZnAtY29sb3ItcGxheSIgZD0iTTQ5LjkyMTctLjA3OGE1MCw1MCwwLDEsMCw1MCw1MEE1MC4wNTY0LDUwLjA1NjQsMCwwLDAsNDkuOTIxNy0uMDc4WiIvPjxwYXRoIGNsYXNzPSJjb250cm9sYnV0dG9uIiBkPSJNNDEuMDM1OSw3MS4xOWE1LjA0OTIsNS4wNDkyLDAsMCwxLTIuNTU3NS0uNjY3M2MtMS44MDMxLTEuMDQxLTIuNzk1OC0zLjEyNDgtMi43OTU4LTUuODY2NFYzNS4xODg3YzAtMi43NDI5Ljk5MzMtNC44MjcyLDIuNzk3LTUuODY3NiwxLjgwMjUtMS4wNDIyLDQuMTAzNC0uODYsNi40OC41MTQzTDcwLjQ3ODIsNDQuNTY3MmMyLjM3NTEsMS4zNzExLDMuNjgyNiwzLjI3MjUsMy42ODMyLDUuMzU0NXMtMS4zMDc2LDMuOTg0NS0zLjY4MzIsNS4zNTYyTDQ0Ljk1OTIsNzAuMDExNEE3LjkzODQsNy45Mzg0LDAsMCwxLDQxLjAzNTksNzEuMTlabS4wMDY1LTQwLjEyM2EyLjY3OTQsMi42Nzk0LDAsMCwwLTEuMzU4Mi4zNDEzYy0xLjAyNjMuNTkyNi0xLjU5MTIsMS45MzQ5LTEuNTkxMiwzLjc4VjY0LjY1NjNjMCwxLjg0NDkuNTY0OSwzLjE4NjYsMS41OTA2LDMuNzc5MSwxLjAyODEuNTkzMiwyLjQ3MzMuNDEwOCw0LjA3LS41MTJMNjkuMjczLDUzLjE5MDZjMS41OTgzLS45MjI3LDIuNDc4LTIuMDgzOCwyLjQ3OC0zLjI2ODlzLS44OC0yLjM0NDUtMi40NzgtMy4yNjY2TDQzLjc1NCwzMS45MjI3QTUuNTY4NSw1LjU2ODUsMCwwLDAsNDEuMDQyMywzMS4wNjcxWiIgZmlsdGVyPSJ1cmwoI2YxKSIvPjwvc3ZnPgo="
|
183 |
+
, PLAY_ROUNDED_FILL = "PHN2ZyBjbGFzcz0iZnAtcGxheS1yb3VuZGVkLWZpbGwiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiPgogIDxkZWZzPjxzdHlsZT4uYXtmaWxsOiMwMDA7b3BhY2l0eTowLjY1O30uYntmaWxsOiNmZmY7b3BhY2l0eToxLjA7fTwvc3R5bGU+CiAgPC9kZWZzPjx0aXRsZT5wbGF5LXJvdW5kZWQtZmlsbDwvdGl0bGU+CiAgPHBhdGggY2xhc3M9ImZwLWNvbG9yLXBsYXkiIGQ9Ik00OS45MjE3LS4wNzhhNTAsNTAsMCwxLDAsNTAsNTBBNTAuMDU2NCw1MC4wNTY0LDAsMCwwLDQ5LjkyMTctLjA3OFoiLz4KICA8cGF0aCBjbGFzcz0iYiIgZD0iTTM1Ljk0MiwzNS4yMzIzYzAtNC43Mjg5LDMuMzUwNi02LjY2MzcsNy40NDYtNC4yOTcxTDY4LjgzLDQ1LjYyMzVjNC4wOTU2LDIuMzY0LDQuMDk1Niw2LjIzMTksMCw4LjU5NzdMNDMuMzg4LDY4LjkxYy00LjA5NTQsMi4zNjQtNy40NDYuNDMtNy40NDYtNC4yOTc5WiIgZmlsdGVyPSJ1cmwoI2YxKSIvPgogIDwvc3ZnPgogIAo="
|
184 |
+
, PLAY_SHARP_FILL = "PHN2ZyBjbGFzcz0iZnAtcGxheS1zaGFycC1maWxsIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj4KICA8ZGVmcz4KICAgIDxzdHlsZT4uZnAtY29sb3ItcGxheXtvcGFjaXR5OjAuNjU7fS5jb250cm9sYnV0dG9ue2ZpbGw6I2ZmZjt9PC9zdHlsZT4KICA8L2RlZnM+CiAgPHRpdGxlPnBsYXktc2hhcnAtZmlsbDwvdGl0bGU+CiAgPHBhdGggY2xhc3M9ImZwLWNvbG9yLXBsYXkiIGQ9Ik00OS45MjE3LS4wNzhhNTAsNTAsMCwxLDAsNTAsNTBBNTAuMDU2NCw1MC4wNTY0LDAsMCwwLDQ5LjkyMTctLjA3OFoiLz4KICA8cG9seWdvbiBjbGFzcz0iY29udHJvbGJ1dHRvbiIgcG9pbnRzPSI3My42MDEgNTAgMzcuOTY4IDcwLjU3MyAzNy45NjggMjkuNDI3IDczLjYwMSA1MCIgZmlsdGVyPSJ1cmwoI2YxKSIvPgo8L3N2Zz4K"
|
185 |
+
, PLAY_SHARP_OUTLINE = "PHN2ZyBjbGFzcz0iZnAtcGxheS1zaGFycC1vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA5OS44NDQgOTkuODQzNCI+PGRlZnM+PHN0eWxlPi5jb250cm9sYnV0dG9uYmd7b3BhY2l0eTowLjY1O30uY29udHJvbGJ1dHRvbntmaWxsOiNmZmY7fTwvc3R5bGU+CjwvZGVmcz48dGl0bGU+cGxheS1zaGFycC1vdXRsaW5lPC90aXRsZT48cGF0aCBjbGFzcz0iZnAtY29sb3ItcGxheSIgZD0iTTQ5LjkyMTctLjA3OGE1MCw1MCwwLDEsMCw1MCw1MEE1MC4wNTY0LDUwLjA1NjQsMCwwLDAsNDkuOTIxNy0uMDc4WiIvPjxwYXRoIGNsYXNzPSJjb250cm9sYnV0dG9uIiBkPSJNMzYuOTQ0Myw3Mi4yNDczVjI3LjI5MTZMNzUuODc3Niw0OS43N1ptMi4yLTQxLjE0NTVWNjguNDM3MUw3MS40Nzc2LDQ5Ljc3WiIgZmlsdGVyPSJ1cmwoI2YxKSIvPjwvc3ZnPgo=";
|
186 |
+
|
187 |
+
if( flowplayer.version.match(/^7/) && flowplayer.support.svg ) {
|
188 |
+
jQuery(this).find('.fp-play').append( atob(PLAY_ROUNDED_OUTLINE) + atob(PLAY_ROUNDED_FILL) + atob(PLAY_SHARP_FILL) + atob(PLAY_SHARP_OUTLINE) )
|
189 |
+
jQuery(this).removeClass('no-svg');
|
190 |
+
}
|
191 |
+
} );
|
192 |
+
|
193 |
+
}
|
js/lightbox.js
CHANGED
@@ -110,6 +110,15 @@ function fv_player_lightbox_bind(){
|
|
110 |
}
|
111 |
ratio.css("paddingTop", player.data('ratio') * 100 + "%");
|
112 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
//if (!support.inlineBlock) $("object", root).height(root.height());
|
114 |
} );
|
115 |
|
110 |
}
|
111 |
ratio.css("paddingTop", player.data('ratio') * 100 + "%");
|
112 |
}
|
113 |
+
var PLAY_ROUNDED_OUTLINE = "PHN2ZyBjbGFzcz0iZnAtcGxheS1yb3VuZGVkLW91dGxpbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDk5Ljg0NCA5OS44NDM0Ij48ZGVmcz48c3R5bGU+LmZwLWNvbG9yLXBsYXl7b3BhY2l0eTowLjY1O30uY29udHJvbGJ1dHRvbntmaWxsOiNmZmY7fTwvc3R5bGU+CjwvZGVmcz4KPHRpdGxlPnBsYXktcm91bmRlZC1vdXRsaW5lPC90aXRsZT48cGF0aCBjbGFzcz0iZnAtY29sb3ItcGxheSIgZD0iTTQ5LjkyMTctLjA3OGE1MCw1MCwwLDEsMCw1MCw1MEE1MC4wNTY0LDUwLjA1NjQsMCwwLDAsNDkuOTIxNy0uMDc4WiIvPjxwYXRoIGNsYXNzPSJjb250cm9sYnV0dG9uIiBkPSJNNDEuMDM1OSw3MS4xOWE1LjA0OTIsNS4wNDkyLDAsMCwxLTIuNTU3NS0uNjY3M2MtMS44MDMxLTEuMDQxLTIuNzk1OC0zLjEyNDgtMi43OTU4LTUuODY2NFYzNS4xODg3YzAtMi43NDI5Ljk5MzMtNC44MjcyLDIuNzk3LTUuODY3NiwxLjgwMjUtMS4wNDIyLDQuMTAzNC0uODYsNi40OC41MTQzTDcwLjQ3ODIsNDQuNTY3MmMyLjM3NTEsMS4zNzExLDMuNjgyNiwzLjI3MjUsMy42ODMyLDUuMzU0NXMtMS4zMDc2LDMuOTg0NS0zLjY4MzIsNS4zNTYyTDQ0Ljk1OTIsNzAuMDExNEE3LjkzODQsNy45Mzg0LDAsMCwxLDQxLjAzNTksNzEuMTlabS4wMDY1LTQwLjEyM2EyLjY3OTQsMi42Nzk0LDAsMCwwLTEuMzU4Mi4zNDEzYy0xLjAyNjMuNTkyNi0xLjU5MTIsMS45MzQ5LTEuNTkxMiwzLjc4VjY0LjY1NjNjMCwxLjg0NDkuNTY0OSwzLjE4NjYsMS41OTA2LDMuNzc5MSwxLjAyODEuNTkzMiwyLjQ3MzMuNDEwOCw0LjA3LS41MTJMNjkuMjczLDUzLjE5MDZjMS41OTgzLS45MjI3LDIuNDc4LTIuMDgzOCwyLjQ3OC0zLjI2ODlzLS44OC0yLjM0NDUtMi40NzgtMy4yNjY2TDQzLjc1NCwzMS45MjI3QTUuNTY4NSw1LjU2ODUsMCwwLDAsNDEuMDQyMywzMS4wNjcxWiIgZmlsdGVyPSJ1cmwoI2YxKSIvPjwvc3ZnPgo="
|
114 |
+
, PLAY_ROUNDED_FILL = "PHN2ZyBjbGFzcz0iZnAtcGxheS1yb3VuZGVkLWZpbGwiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDEwMCAxMDAiPgogIDxkZWZzPjxzdHlsZT4uYXtmaWxsOiMwMDA7b3BhY2l0eTowLjY1O30uYntmaWxsOiNmZmY7b3BhY2l0eToxLjA7fTwvc3R5bGU+CiAgPC9kZWZzPjx0aXRsZT5wbGF5LXJvdW5kZWQtZmlsbDwvdGl0bGU+CiAgPHBhdGggY2xhc3M9ImZwLWNvbG9yLXBsYXkiIGQ9Ik00OS45MjE3LS4wNzhhNTAsNTAsMCwxLDAsNTAsNTBBNTAuMDU2NCw1MC4wNTY0LDAsMCwwLDQ5LjkyMTctLjA3OFoiLz4KICA8cGF0aCBjbGFzcz0iYiIgZD0iTTM1Ljk0MiwzNS4yMzIzYzAtNC43Mjg5LDMuMzUwNi02LjY2MzcsNy40NDYtNC4yOTcxTDY4LjgzLDQ1LjYyMzVjNC4wOTU2LDIuMzY0LDQuMDk1Niw2LjIzMTksMCw4LjU5NzdMNDMuMzg4LDY4LjkxYy00LjA5NTQsMi4zNjQtNy40NDYuNDMtNy40NDYtNC4yOTc5WiIgZmlsdGVyPSJ1cmwoI2YxKSIvPgogIDwvc3ZnPgogIAo="
|
115 |
+
, PLAY_SHARP_FILL = "PHN2ZyBjbGFzcz0iZnAtcGxheS1zaGFycC1maWxsIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj4KICA8ZGVmcz4KICAgIDxzdHlsZT4uZnAtY29sb3ItcGxheXtvcGFjaXR5OjAuNjU7fS5jb250cm9sYnV0dG9ue2ZpbGw6I2ZmZjt9PC9zdHlsZT4KICA8L2RlZnM+CiAgPHRpdGxlPnBsYXktc2hhcnAtZmlsbDwvdGl0bGU+CiAgPHBhdGggY2xhc3M9ImZwLWNvbG9yLXBsYXkiIGQ9Ik00OS45MjE3LS4wNzhhNTAsNTAsMCwxLDAsNTAsNTBBNTAuMDU2NCw1MC4wNTY0LDAsMCwwLDQ5LjkyMTctLjA3OFoiLz4KICA8cG9seWdvbiBjbGFzcz0iY29udHJvbGJ1dHRvbiIgcG9pbnRzPSI3My42MDEgNTAgMzcuOTY4IDcwLjU3MyAzNy45NjggMjkuNDI3IDczLjYwMSA1MCIgZmlsdGVyPSJ1cmwoI2YxKSIvPgo8L3N2Zz4K"
|
116 |
+
, PLAY_SHARP_OUTLINE = "PHN2ZyBjbGFzcz0iZnAtcGxheS1zaGFycC1vdXRsaW5lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA5OS44NDQgOTkuODQzNCI+PGRlZnM+PHN0eWxlPi5jb250cm9sYnV0dG9uYmd7b3BhY2l0eTowLjY1O30uY29udHJvbGJ1dHRvbntmaWxsOiNmZmY7fTwvc3R5bGU+CjwvZGVmcz48dGl0bGU+cGxheS1zaGFycC1vdXRsaW5lPC90aXRsZT48cGF0aCBjbGFzcz0iZnAtY29sb3ItcGxheSIgZD0iTTQ5LjkyMTctLjA3OGE1MCw1MCwwLDEsMCw1MCw1MEE1MC4wNTY0LDUwLjA1NjQsMCwwLDAsNDkuOTIxNy0uMDc4WiIvPjxwYXRoIGNsYXNzPSJjb250cm9sYnV0dG9uIiBkPSJNMzYuOTQ0Myw3Mi4yNDczVjI3LjI5MTZMNzUuODc3Niw0OS43N1ptMi4yLTQxLjE0NTVWNjguNDM3MUw3MS40Nzc2LDQ5Ljc3WiIgZmlsdGVyPSJ1cmwoI2YxKSIvPjwvc3ZnPgo=";
|
117 |
+
|
118 |
+
if( flowplayer.version.match(/^7/) && flowplayer.support.svg ) {
|
119 |
+
jQuery(this).find('.fp-play').append( atob(PLAY_ROUNDED_OUTLINE) + atob(PLAY_ROUNDED_FILL) + atob(PLAY_SHARP_FILL) + atob(PLAY_SHARP_OUTLINE) )
|
120 |
+
jQuery(this).removeClass('no-svg');
|
121 |
+
}
|
122 |
//if (!support.inlineBlock) $("object", root).height(root.height());
|
123 |
} );
|
124 |
|
models/email-subscription.php
CHANGED
@@ -675,4 +675,5 @@ class FV_Player_Email_Subscription {
|
|
675 |
|
676 |
}
|
677 |
|
|
|
678 |
$FV_Player_Email_Subscription = new FV_Player_Email_Subscription();
|
675 |
|
676 |
}
|
677 |
|
678 |
+
global $FV_Player_Email_Subscription;
|
679 |
$FV_Player_Email_Subscription = new FV_Player_Email_Subscription();
|
models/flowplayer-frontend.php
CHANGED
@@ -153,12 +153,12 @@ class flowplayer_frontend extends flowplayer
|
|
153 |
$aPlaylistItems = array(); // todo: remove
|
154 |
$aSplashScreens = array();
|
155 |
$aCaptions = array();
|
156 |
-
if( !$this->_get_option('old_code') || apply_filters('fv_flowplayer_playlist_items',array(),$this) || isset($this->aCurArgs['playlist']) && strlen(trim($this->aCurArgs['playlist'])) > 0 ) {
|
157 |
|
158 |
list( $playlist_items_external_html, $aPlaylistItems, $aSplashScreens, $aCaptions ) = $this->build_playlist( $this->aCurArgs, $media, $src1, $src2, $rtmp, $splash_img );
|
159 |
}
|
160 |
|
161 |
-
if( !$this->_get_option('old_code')
|
162 |
$playlist_items_external_html = false;
|
163 |
$attributes['data-item'] = $this->json_encode( apply_filters( 'fv_player_item', $aPlaylistItems[0], 0, $this->aCurArgs ) );
|
164 |
}
|
@@ -409,7 +409,7 @@ class flowplayer_frontend extends flowplayer
|
|
409 |
|
410 |
$attributes['style'] = '';
|
411 |
if( !empty($this->aCurArgs['playlist']) && ( in_array($this->_get_option('liststyle'), array('horizontal','slider') ) || isset($this->aCurArgs['liststyle']) && in_array($this->aCurArgs['liststyle'] == 'horizontal', array('horizontal','slider')) ) ) {
|
412 |
-
|
413 |
} else if( !$bIsAudio ) {
|
414 |
if( intval($width) == 0 ) $width = '100%';
|
415 |
if( intval($height) == 0 ) $height = '100%';
|
@@ -487,6 +487,10 @@ class flowplayer_frontend extends flowplayer
|
|
487 |
|
488 |
}
|
489 |
|
|
|
|
|
|
|
|
|
490 |
if( !empty($this->aCurArgs['redirect']) ) {
|
491 |
$attributes['data-fv_redirect'] = trim($this->aCurArgs['redirect']);
|
492 |
}
|
153 |
$aPlaylistItems = array(); // todo: remove
|
154 |
$aSplashScreens = array();
|
155 |
$aCaptions = array();
|
156 |
+
if( $this->is_beta() || !$this->_get_option('old_code') || apply_filters('fv_flowplayer_playlist_items',array(),$this) || isset($this->aCurArgs['playlist']) && strlen(trim($this->aCurArgs['playlist'])) > 0 ) {
|
157 |
|
158 |
list( $playlist_items_external_html, $aPlaylistItems, $aSplashScreens, $aCaptions ) = $this->build_playlist( $this->aCurArgs, $media, $src1, $src2, $rtmp, $splash_img );
|
159 |
}
|
160 |
|
161 |
+
if( ( $this->is_beta() || !$this->_get_option('old_code') ) && count($aPlaylistItems) == 1 ) {
|
162 |
$playlist_items_external_html = false;
|
163 |
$attributes['data-item'] = $this->json_encode( apply_filters( 'fv_player_item', $aPlaylistItems[0], 0, $this->aCurArgs ) );
|
164 |
}
|
409 |
|
410 |
$attributes['style'] = '';
|
411 |
if( !empty($this->aCurArgs['playlist']) && ( in_array($this->_get_option('liststyle'), array('horizontal','slider') ) || isset($this->aCurArgs['liststyle']) && in_array($this->aCurArgs['liststyle'] == 'horizontal', array('horizontal','slider')) ) ) {
|
412 |
+
$attributes['style'] .= 'max-width: 100%; ';
|
413 |
} else if( !$bIsAudio ) {
|
414 |
if( intval($width) == 0 ) $width = '100%';
|
415 |
if( intval($height) == 0 ) $height = '100%';
|
487 |
|
488 |
}
|
489 |
|
490 |
+
if( get_query_var('fv_player_embed') ) { // this is needed for iframe embedding only
|
491 |
+
$attributes['class'] .= ' fp-is-embed';
|
492 |
+
}
|
493 |
+
|
494 |
if( !empty($this->aCurArgs['redirect']) ) {
|
495 |
$attributes['data-fv_redirect'] = trim($this->aCurArgs['redirect']);
|
496 |
}
|
models/flowplayer.php
CHANGED
@@ -489,8 +489,13 @@ class flowplayer extends FV_Wordpress_Flowplayer_Plugin_Private {
|
|
489 |
|
490 |
|
491 |
private function _get_conf() {
|
492 |
-
|
493 |
-
|
|
|
|
|
|
|
|
|
|
|
494 |
|
495 |
if( !isset( $conf['autoplay'] ) ) $conf['autoplay'] = 'false';
|
496 |
if( !isset( $conf['googleanalytics'] ) ) $conf['googleanalytics'] = 'false';
|
@@ -640,10 +645,6 @@ class flowplayer extends FV_Wordpress_Flowplayer_Plugin_Private {
|
|
640 |
$value = false;
|
641 |
else if($value === 'true')
|
642 |
$value = true;
|
643 |
-
|
644 |
-
if( isset($_GET['old_code']) && $key == 'old_code' ) {
|
645 |
-
return $_GET['old_code'];
|
646 |
-
}
|
647 |
|
648 |
return $value;
|
649 |
}
|
@@ -755,11 +756,11 @@ class flowplayer extends FV_Wordpress_Flowplayer_Plugin_Private {
|
|
755 |
public function beta_updates() {
|
756 |
if( flowplayer::is_beta() ) {
|
757 |
$this->strPluginSlug = 'fv-wordpress-flowplayer';
|
758 |
-
$this->strPrivateAPI = '
|
759 |
$this->strPluginPath = 'fv-wordpress-flowplayer/flowplayer.php';
|
760 |
global $fv_wp_flowplayer_ver_beta;
|
761 |
$this->version = str_replace('.beta','',$fv_wp_flowplayer_ver_beta);
|
762 |
-
$this->readme_URL = 'https://
|
763 |
parent::auto_updates();
|
764 |
}
|
765 |
}
|
@@ -772,7 +773,7 @@ class flowplayer extends FV_Wordpress_Flowplayer_Plugin_Private {
|
|
772 |
if( !$sItemCaption && isset($aArgs['liststyle']) && $aArgs['liststyle'] == 'text' ) $sItemCaption = 'Video '.($index+1);
|
773 |
|
774 |
$sHTML = "\t\t<a href='#' onclick='return false'";
|
775 |
-
$sHTML .= !$this->_get_option('old_code') ? " data-item='".$this->json_encode($aPlayer)."'" : "";
|
776 |
$sHTML .= ">";
|
777 |
if( !isset($aArgs['liststyle']) || $aArgs['liststyle'] != 'text' ) $sHTML .= $sSplashImage ? "<div style='background-image: url(\"".$sSplashImage."\")'></div>" : "<div></div>";
|
778 |
|
@@ -899,7 +900,7 @@ class flowplayer extends FV_Wordpress_Flowplayer_Plugin_Private {
|
|
899 |
|
900 |
$sHTML = array();
|
901 |
|
902 |
-
if( !$this->_get_option('old_code') || $sShortcode && count($sItems) > 0) {
|
903 |
//var_dump($sItemCaption);
|
904 |
|
905 |
if( isset($aArgs['liststyle']) && !empty($aArgs['liststyle']) ){
|
@@ -1196,8 +1197,8 @@ class flowplayer extends FV_Wordpress_Flowplayer_Plugin_Private {
|
|
1196 |
.fp-playlist-external.fv-playlist-design-2014 a.is-active,.fp-playlist-external.fv-playlist-design-2014 a.is-active h4,.fp-playlist-external.fp-playlist-only-captions a.is-active,.fp-playlist-external.fv-playlist-design-2014 a.is-active h4, .fp-playlist-external.fp-playlist-only-captions a.is-active h4 { color:<?php echo $this->_get_option('playlistSelectedColor');?>; }
|
1197 |
<?php if ( $this->_get_option('playlistBgColor') !=='#') : ?>.fp-playlist-vertical { background-color:<?php echo $this->_get_option('playlistBgColor');?>; }<?php endif; ?>
|
1198 |
|
1199 |
-
<?php if( $this->_get_option('subtitleSize') ) : ?>.flowplayer .fp-
|
1200 |
-
<?php if( $this->_get_option('subtitleFontFace') ) : ?>.flowplayer .fp-
|
1201 |
<?php if( $this->_get_option('logoPosition') ) :
|
1202 |
$value = $this->_get_option('logoPosition');
|
1203 |
if( $value == 'bottom-left' ) {
|
@@ -1211,7 +1212,7 @@ class flowplayer extends FV_Wordpress_Flowplayer_Plugin_Private {
|
|
1211 |
}
|
1212 |
?>.flowplayer .fp-logo { <?php echo $sCSS; ?> }<?php endif; ?>
|
1213 |
|
1214 |
-
.flowplayer .fp-
|
1215 |
|
1216 |
<?php if( $this->_get_option(array($skin, 'player-position')) && 'left' == $this->_get_option(array($skin, 'player-position')) ) : ?>.flowplayer { margin-left: 0; }<?php endif; ?>
|
1217 |
<?php echo apply_filters('fv_player_custom_css',''); ?>
|
@@ -1983,11 +1984,14 @@ class flowplayer extends FV_Wordpress_Flowplayer_Plugin_Private {
|
|
1983 |
|
1984 |
public static function is_beta() {
|
1985 |
global $FV_Player_Pro;
|
1986 |
-
if(
|
|
|
|
|
1987 |
|
1988 |
-
if(
|
|
|
|
|
1989 |
|
1990 |
-
$version = isset($_POST['fv-player-pro-release']) && isset($_POST['fv_player_pro_switch']) && wp_verify_nonce( $_POST['fv_player_pro_switch'], 'fv_player_pro_switch') ? $_POST['fv-player-pro-release'] : get_option('fv-player-pro-release');
|
1991 |
if( $version == 'beta' ) {
|
1992 |
global $fv_wp_flowplayer_ver, $fv_wp_flowplayer_ver_beta;
|
1993 |
$fv_wp_flowplayer_ver = $fv_wp_flowplayer_ver_beta;
|
489 |
|
490 |
|
491 |
private function _get_conf() {
|
492 |
+
$conf = get_option( 'fvwpflowplayer' );
|
493 |
+
|
494 |
+
if( !$conf ) {
|
495 |
+
update_option('fv-player-pro-release','beta'); // new FV Player install, use Beta!
|
496 |
+
$conf['nag_fv_player_7'] = true;
|
497 |
+
$conf['notice_new_lightbox'] = true;
|
498 |
+
}
|
499 |
|
500 |
if( !isset( $conf['autoplay'] ) ) $conf['autoplay'] = 'false';
|
501 |
if( !isset( $conf['googleanalytics'] ) ) $conf['googleanalytics'] = 'false';
|
645 |
$value = false;
|
646 |
else if($value === 'true')
|
647 |
$value = true;
|
|
|
|
|
|
|
|
|
648 |
|
649 |
return $value;
|
650 |
}
|
756 |
public function beta_updates() {
|
757 |
if( flowplayer::is_beta() ) {
|
758 |
$this->strPluginSlug = 'fv-wordpress-flowplayer';
|
759 |
+
$this->strPrivateAPI = 'https://plugins.trac.wordpress.org/browser/fv-wordpress-flowplayer/trunk/beta-update.txt?format=txt';
|
760 |
$this->strPluginPath = 'fv-wordpress-flowplayer/flowplayer.php';
|
761 |
global $fv_wp_flowplayer_ver_beta;
|
762 |
$this->version = str_replace('.beta','',$fv_wp_flowplayer_ver_beta);
|
763 |
+
$this->readme_URL = 'https://plugins.trac.wordpress.org/browser/fv-wordpress-flowplayer/trunk/beta-changelog.txt?format=txt';
|
764 |
parent::auto_updates();
|
765 |
}
|
766 |
}
|
773 |
if( !$sItemCaption && isset($aArgs['liststyle']) && $aArgs['liststyle'] == 'text' ) $sItemCaption = 'Video '.($index+1);
|
774 |
|
775 |
$sHTML = "\t\t<a href='#' onclick='return false'";
|
776 |
+
$sHTML .= $this->is_beta() || !$this->_get_option('old_code') ? " data-item='".$this->json_encode($aPlayer)."'" : "";
|
777 |
$sHTML .= ">";
|
778 |
if( !isset($aArgs['liststyle']) || $aArgs['liststyle'] != 'text' ) $sHTML .= $sSplashImage ? "<div style='background-image: url(\"".$sSplashImage."\")'></div>" : "<div></div>";
|
779 |
|
900 |
|
901 |
$sHTML = array();
|
902 |
|
903 |
+
if( $this->is_beta() || !$this->_get_option('old_code') || $sShortcode && count($sItems) > 0) {
|
904 |
//var_dump($sItemCaption);
|
905 |
|
906 |
if( isset($aArgs['liststyle']) && !empty($aArgs['liststyle']) ){
|
1197 |
.fp-playlist-external.fv-playlist-design-2014 a.is-active,.fp-playlist-external.fv-playlist-design-2014 a.is-active h4,.fp-playlist-external.fp-playlist-only-captions a.is-active,.fp-playlist-external.fv-playlist-design-2014 a.is-active h4, .fp-playlist-external.fp-playlist-only-captions a.is-active h4 { color:<?php echo $this->_get_option('playlistSelectedColor');?>; }
|
1198 |
<?php if ( $this->_get_option('playlistBgColor') !=='#') : ?>.fp-playlist-vertical { background-color:<?php echo $this->_get_option('playlistBgColor');?>; }<?php endif; ?>
|
1199 |
|
1200 |
+
<?php if( $this->_get_option('subtitleSize') ) : ?>.flowplayer .fp-captions p { font-size: <?php echo intval($this->_get_option('subtitleSize')); ?>px; }<?php endif; ?>
|
1201 |
+
<?php if( $this->_get_option('subtitleFontFace') ) : ?>.flowplayer .fp-captions p { font-family: <?php echo $this->_get_option('subtitleFontFace'); ?>; }<?php endif; ?>
|
1202 |
<?php if( $this->_get_option('logoPosition') ) :
|
1203 |
$value = $this->_get_option('logoPosition');
|
1204 |
if( $value == 'bottom-left' ) {
|
1212 |
}
|
1213 |
?>.flowplayer .fp-logo { <?php echo $sCSS; ?> }<?php endif; ?>
|
1214 |
|
1215 |
+
.flowplayer .fp-captions p { background-color: rgba(<?php echo hexdec(substr($sSubtitleBgColor,1,2)); ?>,<?php echo hexdec(substr($sSubtitleBgColor,3,2)); ?>,<?php echo hexdec(substr($sSubtitleBgColor,5,2)); ?>,<?php echo $this->_get_option('subtitleBgAlpha'); ?>); }
|
1216 |
|
1217 |
<?php if( $this->_get_option(array($skin, 'player-position')) && 'left' == $this->_get_option(array($skin, 'player-position')) ) : ?>.flowplayer { margin-left: 0; }<?php endif; ?>
|
1218 |
<?php echo apply_filters('fv_player_custom_css',''); ?>
|
1984 |
|
1985 |
public static function is_beta() {
|
1986 |
global $FV_Player_Pro;
|
1987 |
+
if( isset($FV_Player_Pro) && isset($FV_Player_Pro->version) && version_compare('0.9.20', str_replace('.beta','',$FV_Player_Pro->version) ) == 1 ) return false; // no Beta if it's old FV Player Pro is being used
|
1988 |
+
|
1989 |
+
$version = get_option('fv-player-pro-release');
|
1990 |
|
1991 |
+
if( isset($_POST['fv-player-pro-release']) && isset($_POST['fv_player_pro_switch']) && wp_verify_nonce( $_POST['fv_player_pro_switch'], 'fv_player_pro_switch') ) {
|
1992 |
+
$version = $_POST['fv-player-pro-release'];
|
1993 |
+
}
|
1994 |
|
|
|
1995 |
if( $version == 'beta' ) {
|
1996 |
global $fv_wp_flowplayer_ver, $fv_wp_flowplayer_ver_beta;
|
1997 |
$fv_wp_flowplayer_ver = $fv_wp_flowplayer_ver_beta;
|
models/lightbox.php
CHANGED
@@ -50,7 +50,12 @@ class FV_Player_lightbox {
|
|
50 |
$bCSSLoaded = true;
|
51 |
|
52 |
global $fv_wp_flowplayer_ver;
|
53 |
-
|
|
|
|
|
|
|
|
|
|
|
54 |
}
|
55 |
|
56 |
function conf_defaults($conf){
|
@@ -148,13 +153,18 @@ class FV_Player_lightbox {
|
|
148 |
$sTitle = empty($aArgs[1]->aCurArgs['playlist']) ? $sTitle = $this->get_title_attr($aArgs[1]->aCurArgs) : '';
|
149 |
$html = str_replace(array('class="flowplayer ', "class='flowplayer "), array('class="flowplayer lightboxed ', "class='flowplayer lightboxed "), $html);
|
150 |
$this->lightboxHtml .= "<div style='display: none'>\n" . $html . "</div>\n";
|
151 |
-
|
|
|
|
|
|
|
|
|
152 |
} else {
|
153 |
$iWidth = ( isset($aLightbox[1]) && intval($aLightbox[1]) > 0 ) ? intval($aLightbox[1]) : ( ($iPlayerWidth > $iPlayerWidth) ? $iPlayerWidth : $iConfWidth );
|
154 |
$iHeight = ( isset($aLightbox[2]) && intval($aLightbox[2]) > 0 ) ? intval($aLightbox[2]) : ( ($iPlayerHeight > $iConfHeight) ? $iPlayerHeight : $iConfHeight );
|
155 |
|
|
|
156 |
$sStyle = 'style="max-width: ' . $iWidth . 'px; max-height: ' . $iHeight . 'px; ';
|
157 |
-
if (isset($aArgs[1]->aCurArgs['splash']) && $sSplash
|
158 |
$sStyle .= 'background-image: url(\'' . $sSplash . '\')';
|
159 |
}
|
160 |
$sStyle .= '"';
|
@@ -188,7 +198,12 @@ class FV_Player_lightbox {
|
|
188 |
/* $html = preg_replace( '~max-width: \d+px;~', 'max-width: '.$iWidth.'px;', $html );
|
189 |
$html = preg_replace( '~max-height: \d+px;~', 'max-height: '.$iHeight.'px;', $html ); */
|
190 |
|
191 |
-
|
|
|
|
|
|
|
|
|
|
|
192 |
if( $fv_fp->is_beta() ) {
|
193 |
$html .= '<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>';
|
194 |
} else {
|
@@ -237,7 +252,11 @@ class FV_Player_lightbox {
|
|
237 |
|
238 |
if( $i > 1 ) {
|
239 |
$sTitle = $this->get_title_attr($fv_fp->aCurArgs);
|
240 |
-
|
|
|
|
|
|
|
|
|
241 |
}
|
242 |
|
243 |
} else {
|
@@ -248,9 +267,17 @@ class FV_Player_lightbox {
|
|
248 |
|
249 |
$aPlayerParts = explode("<div class='fv_player_lightbox_hidden'", $aPlayer['html']);
|
250 |
if( $i == 1 ) {
|
251 |
-
|
|
|
|
|
|
|
|
|
252 |
} else {
|
253 |
-
|
|
|
|
|
|
|
|
|
254 |
}
|
255 |
|
256 |
if ($i > 1) {
|
@@ -285,6 +312,11 @@ class FV_Player_lightbox {
|
|
285 |
return $content;
|
286 |
}
|
287 |
|
|
|
|
|
|
|
|
|
|
|
288 |
return $content;
|
289 |
}
|
290 |
|
@@ -312,7 +344,7 @@ class FV_Player_lightbox {
|
|
312 |
return '[fvplayer src="'.esc_attr($href[1]).'" lightbox="true;text" caption="'.esc_attr($caption).'"]';
|
313 |
}
|
314 |
}
|
315 |
-
|
316 |
return $html;
|
317 |
}
|
318 |
|
@@ -329,17 +361,25 @@ class FV_Player_lightbox {
|
|
329 |
}
|
330 |
|
331 |
function html_lightbox_images_callback($matches) {
|
332 |
-
if(
|
|
|
|
|
|
|
|
|
333 |
|
334 |
if (!preg_match('/href=[\'"].*?(jpeg|jpg|jpe|gif|png)(?:\?.*?|\s*?)[\'"]/i', $matches[1]))
|
335 |
return $matches[0];
|
336 |
|
337 |
-
if (
|
338 |
-
$matches[1]
|
|
|
|
|
|
|
|
|
339 |
} else {
|
340 |
-
$matches[1] =
|
341 |
}
|
342 |
-
|
343 |
// since the srcset on img doesn't contain all the image sizes we need to create a our own srcset on the anchor which will only have proper aspect ratio image at least the size of the thumbnail
|
344 |
if( stripos($matches[0],'srcset') !== false ) {
|
345 |
if( preg_match( '~gallery-\d+-(\d+)~', $matches[2], $attachment_id ) ) { // todo: support individual images as well!
|
@@ -365,10 +405,15 @@ class FV_Player_lightbox {
|
|
365 |
}
|
366 |
}
|
367 |
}
|
368 |
-
|
369 |
return $matches[1] . $matches[2];
|
370 |
}
|
371 |
|
|
|
|
|
|
|
|
|
|
|
372 |
// this filters out the too small image sizes
|
373 |
function limit_image_size( $image_meta ) {
|
374 |
if( !empty($image_meta['sizes'][$this->tmp_size]) ) {
|
@@ -530,6 +575,12 @@ class FV_Player_lightbox {
|
|
530 |
</script>
|
531 |
<?php
|
532 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
533 |
|
534 |
}
|
535 |
|
50 |
$bCSSLoaded = true;
|
51 |
|
52 |
global $fv_wp_flowplayer_ver;
|
53 |
+
|
54 |
+
if( !$this->is_fancybox() ) {
|
55 |
+
wp_enqueue_style( 'fv_player_lightbox', FV_FP_RELATIVE_PATH . '/css/lightbox.css', array(), $fv_wp_flowplayer_ver );
|
56 |
+
} else {
|
57 |
+
wp_enqueue_style( 'fv_player_lightbox', FV_FP_RELATIVE_PATH . '/css/fancybox.css', array(), $fv_wp_flowplayer_ver );
|
58 |
+
}
|
59 |
}
|
60 |
|
61 |
function conf_defaults($conf){
|
153 |
$sTitle = empty($aArgs[1]->aCurArgs['playlist']) ? $sTitle = $this->get_title_attr($aArgs[1]->aCurArgs) : '';
|
154 |
$html = str_replace(array('class="flowplayer ', "class='flowplayer "), array('class="flowplayer lightboxed ', "class='flowplayer lightboxed "), $html);
|
155 |
$this->lightboxHtml .= "<div style='display: none'>\n" . $html . "</div>\n";
|
156 |
+
if( !$this->is_fancybox() ) {
|
157 |
+
$html = "<a id='fv_flowplayer_" . $aArgs[1]->hash . "_lightbox_starter'" . $sTitle . " href=\"#\" data-fv-lightbox='#wpfp_" . $aArgs[1]->hash . "'>" . $aArgs[1]->aCurArgs['caption'] . "</a>";
|
158 |
+
} else {
|
159 |
+
$html = "<a".$this->fancybox_opts()." id='fv_flowplayer_" . $aArgs[1]->hash . "_lightbox_starter'" . $sTitle . " href=\"#\" data-src='#wpfp_" . $aArgs[1]->hash . "'>" . $aArgs[1]->aCurArgs['caption'] . "</a>";
|
160 |
+
}
|
161 |
} else {
|
162 |
$iWidth = ( isset($aLightbox[1]) && intval($aLightbox[1]) > 0 ) ? intval($aLightbox[1]) : ( ($iPlayerWidth > $iPlayerWidth) ? $iPlayerWidth : $iConfWidth );
|
163 |
$iHeight = ( isset($aLightbox[2]) && intval($aLightbox[2]) > 0 ) ? intval($aLightbox[2]) : ( ($iPlayerHeight > $iConfHeight) ? $iPlayerHeight : $iConfHeight );
|
164 |
|
165 |
+
$sSplash = apply_filters('fv_flowplayer_playlist_splash', $aArgs[1]->aCurArgs['splash'], $fv_fp);
|
166 |
$sStyle = 'style="max-width: ' . $iWidth . 'px; max-height: ' . $iHeight . 'px; ';
|
167 |
+
if (isset($aArgs[1]->aCurArgs['splash']) && $sSplash ) {
|
168 |
$sStyle .= 'background-image: url(\'' . $sSplash . '\')';
|
169 |
}
|
170 |
$sStyle .= '"';
|
198 |
/* $html = preg_replace( '~max-width: \d+px;~', 'max-width: '.$iWidth.'px;', $html );
|
199 |
$html = preg_replace( '~max-height: \d+px;~', 'max-height: '.$iHeight.'px;', $html ); */
|
200 |
|
201 |
+
if( !$this->is_fancybox() ) {
|
202 |
+
$html = "<div id='fv_flowplayer_" . $aArgs[1]->hash . "_lightbox_starter' $sTitle href='#wpfp_" . $aArgs[1]->hash . "' class='flowplayer lightbox-starter is-splash$sClass' $sStyle>";
|
203 |
+
} else {
|
204 |
+
$html = "<div".$this->fancybox_opts($sSplash)." id='fv_flowplayer_" . $aArgs[1]->hash . "_lightbox_starter' $sTitle href='#wpfp_" . $aArgs[1]->hash . "' class='flowplayer lightbox-starter is-splash$sClass' $sStyle>";
|
205 |
+
}
|
206 |
+
|
207 |
if( $fv_fp->is_beta() ) {
|
208 |
$html .= '<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>';
|
209 |
} else {
|
252 |
|
253 |
if( $i > 1 ) {
|
254 |
$sTitle = $this->get_title_attr($fv_fp->aCurArgs);
|
255 |
+
if( !$this->is_fancybox() ) {
|
256 |
+
$output['html'] .= "<li><a id='fv_flowplayer_lightbox_starter'$sTitle href='#' data-fv-lightbox='#wpfp_" . $fv_fp->hash . "'>" . $fv_fp->aCurArgs['caption'] . "</a></li>";
|
257 |
+
} else {
|
258 |
+
$output['html'] .= "<li><a".$this->fancybox_opts()." id='fv_flowplayer_lightbox_starter'$sTitle href='#' data-src='#wpfp_" . $fv_fp->hash . "'>" . $fv_fp->aCurArgs['caption'] . "</a></li>";
|
259 |
+
}
|
260 |
}
|
261 |
|
262 |
} else {
|
267 |
|
268 |
$aPlayerParts = explode("<div class='fv_player_lightbox_hidden'", $aPlayer['html']);
|
269 |
if( $i == 1 ) {
|
270 |
+
if( !$this->is_fancybox() ) {
|
271 |
+
$output['html'] .= "<a id='fv_flowplayer_lightbox_placeholder' href='#' onclick='document.getElementById(\"fv_flowplayer_" . $fv_fp->hash . "_lightbox_starter\").click(); return false'><div style=\"background-image: url('" . $fv_fp->aCurArgs['splash'] . "')\"></div><h4><span>" . $fv_fp->aCurArgs['caption'] . "</span></h4></a>";
|
272 |
+
} else {
|
273 |
+
$output['html'] .= "<a id='fv_flowplayer_lightbox_placeholder' href='#' onclick='document.getElementById(\"fv_flowplayer_" . $fv_fp->hash . "_lightbox_starter\").click(); return false'><div style=\"background-image: url('" . $fv_fp->aCurArgs['splash'] . "')\"></div><h4><span>" . $fv_fp->aCurArgs['caption'] . "</span></h4></a>";
|
274 |
+
}
|
275 |
} else {
|
276 |
+
if( !$this->is_fancybox() ) {
|
277 |
+
$output['html'] .= "<a id='fv_flowplayer_lightbox_starter' href='#' data-fv-lightbox='#wpfp_" . $fv_fp->hash . "'><div style=\"background-image: url('" . $fv_fp->aCurArgs['splash'] . "')\"></div><h4><span>" . $fv_fp->aCurArgs['caption'] . "</span></h4></a>";
|
278 |
+
} else {
|
279 |
+
$output['html'] .= "<a".$this->fancybox_opts($fv_fp->aCurArgs['splash'])." id='fv_flowplayer_lightbox_starter' href='#' data-src='#wpfp_" . $fv_fp->hash . "'><div style=\"background-image: url('" . $fv_fp->aCurArgs['splash'] . "')\"></div><h4><span>" . $fv_fp->aCurArgs['caption'] . "</span></h4></a>";
|
280 |
+
}
|
281 |
}
|
282 |
|
283 |
if ($i > 1) {
|
312 |
return $content;
|
313 |
}
|
314 |
|
315 |
+
if( $this->is_fancybox() && stripos($content, 'lightbox') !== false ) {
|
316 |
+
$content = preg_replace_callback('~<a[^>]*?class=[\'"][^\'"]*?lightbox[^\'"]*?[\'"][^>]*?>([\s\S]*?)</a>~', array($this, 'html_to_lightbox_videos_callback'), $content);
|
317 |
+
return $content;
|
318 |
+
}
|
319 |
+
|
320 |
return $content;
|
321 |
}
|
322 |
|
344 |
return '[fvplayer src="'.esc_attr($href[1]).'" lightbox="true;text" caption="'.esc_attr($caption).'"]';
|
345 |
}
|
346 |
}
|
347 |
+
|
348 |
return $html;
|
349 |
}
|
350 |
|
361 |
}
|
362 |
|
363 |
function html_lightbox_images_callback($matches) {
|
364 |
+
if( !$this->is_fancybox() ) {
|
365 |
+
if( stripos($matches[1],'colorbox') ) return $matches[0];
|
366 |
+
} else {
|
367 |
+
if( stripos($matches[1],'colorbox') || stripos($matches[1],'lightbox') ) return str_replace('<a', '<a data-fancybox="gallery"', $matches[0]);
|
368 |
+
}
|
369 |
|
370 |
if (!preg_match('/href=[\'"].*?(jpeg|jpg|jpe|gif|png)(?:\?.*?|\s*?)[\'"]/i', $matches[1]))
|
371 |
return $matches[0];
|
372 |
|
373 |
+
if( !$this->is_fancybox() ) {
|
374 |
+
if (stripos($matches[1], 'class=') === false) {
|
375 |
+
$matches[1] = str_replace('<a ', '<a class="colorbox" ', $matches[1]);
|
376 |
+
} else {
|
377 |
+
$matches[1] = preg_replace('~(class=[\'"])~', '$1colorbox ', $matches[1]);
|
378 |
+
}
|
379 |
} else {
|
380 |
+
$matches[1] = str_replace( '<a ', '<a data-fancybox="gallery" ', $matches[1] );
|
381 |
}
|
382 |
+
|
383 |
// since the srcset on img doesn't contain all the image sizes we need to create a our own srcset on the anchor which will only have proper aspect ratio image at least the size of the thumbnail
|
384 |
if( stripos($matches[0],'srcset') !== false ) {
|
385 |
if( preg_match( '~gallery-\d+-(\d+)~', $matches[2], $attachment_id ) ) { // todo: support individual images as well!
|
405 |
}
|
406 |
}
|
407 |
}
|
408 |
+
|
409 |
return $matches[1] . $matches[2];
|
410 |
}
|
411 |
|
412 |
+
function is_fancybox() {
|
413 |
+
global $fv_fp;
|
414 |
+
return $fv_fp->is_beta() && !isset($_GET['lightbox_old']);
|
415 |
+
}
|
416 |
+
|
417 |
// this filters out the too small image sizes
|
418 |
function limit_image_size( $image_meta ) {
|
419 |
if( !empty($image_meta['sizes'][$this->tmp_size]) ) {
|
575 |
</script>
|
576 |
<?php
|
577 |
}
|
578 |
+
|
579 |
+
function fancybox_opts( $splash = false ) {
|
580 |
+
$options = array('touch' => false);
|
581 |
+
if( !empty($splash) ) $options['thumb'] = $splash;
|
582 |
+
return " data-fancybox='gallery' data-options='".json_encode($options)."'";
|
583 |
+
}
|
584 |
|
585 |
}
|
586 |
|
models/seo.php
CHANGED
@@ -77,6 +77,35 @@ class FV_Player_SEO {
|
|
77 |
$this->can_seo = false;
|
78 |
}
|
79 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
$this->can_seo = true;
|
81 |
return $args;
|
82 |
}
|
77 |
$this->can_seo = false;
|
78 |
}
|
79 |
|
80 |
+
$dynamic_domains = apply_filters('fv_player_pro_video_ajaxify_domains', array());
|
81 |
+
$amazon = $fv_fp->_get_option('amazon_bucket');
|
82 |
+
if( $amazon && is_array($amazon) && count($amazon) > 0 ) {
|
83 |
+
foreach( $amazon AS $bucket ) {
|
84 |
+
$dynamic_domains[] = 'amazonaws.com/'.$bucket.'/';
|
85 |
+
$dynamic_domains[] = '//'.$bucket.'.s3';
|
86 |
+
}
|
87 |
+
}
|
88 |
+
|
89 |
+
$cf = $fv_fp->_get_option( array('pro','cf_domain') );
|
90 |
+
if( $cf ) {
|
91 |
+
$cf = explode( ',', $cf );
|
92 |
+
if( is_array($cf) && count($cf) > 0 ) {
|
93 |
+
foreach( $cf AS $cf_domain ) {
|
94 |
+
$dynamic_domains[] = $cf_domain;
|
95 |
+
}
|
96 |
+
}
|
97 |
+
}
|
98 |
+
|
99 |
+
if( count($dynamic_domains) ) {
|
100 |
+
$is_dynamic = false;
|
101 |
+
foreach( $dynamic_domains AS $domain ) {
|
102 |
+
if( stripos($args['src'],$domain) !== false ) {
|
103 |
+
$this->can_seo = false;
|
104 |
+
return $args;
|
105 |
+
}
|
106 |
+
}
|
107 |
+
}
|
108 |
+
|
109 |
$this->can_seo = true;
|
110 |
return $args;
|
111 |
}
|
models/xml-video-sitemap.php
CHANGED
@@ -62,6 +62,16 @@ class FV_Xml_Video_Sitemap {
|
|
62 |
$dynamic_domains[] = '//'.$bucket.'.s3';
|
63 |
}
|
64 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
|
66 |
foreach ($posts as $objPost) {
|
67 |
$did_videos = array();
|
62 |
$dynamic_domains[] = '//'.$bucket.'.s3';
|
63 |
}
|
64 |
}
|
65 |
+
|
66 |
+
$cf = $fv_fp->_get_option( array('pro','cf_domain') );
|
67 |
+
if( $cf ) {
|
68 |
+
$cf = explode( ',', $cf );
|
69 |
+
if( is_array($cf) && count($cf) > 0 ) {
|
70 |
+
foreach( $cf AS $cf_domain ) {
|
71 |
+
$dynamic_domains[] = $cf_domain;
|
72 |
+
}
|
73 |
+
}
|
74 |
+
}
|
75 |
|
76 |
foreach ($posts as $objPost) {
|
77 |
$did_videos = array();
|
readme.txt
CHANGED
@@ -357,6 +357,15 @@ Thank you for being part of the HMTL 5 mobile video revolution!
|
|
357 |
|
358 |
== Changelog ==
|
359 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
360 |
= 6.6.5 - 2018/07/02 =
|
361 |
|
362 |
* Feature - Handle WordPress video shortcodes option now also converts YouTube links
|
357 |
|
358 |
== Changelog ==
|
359 |
|
360 |
+
= 6.6.6 - 2018/07/10 =
|
361 |
+
|
362 |
+
New users get FV Player 7 Beta (7.1.6.726.beta) automatically!
|
363 |
+
|
364 |
+
* Making sure big custom logo won't prevent video playback due to blocking clicks
|
365 |
+
* Playlist - setting maximum player width to 100% to prevent display issues
|
366 |
+
* Preventing right mouse click on player
|
367 |
+
* XML Video Sitemap and Schema.org - fixing exclusion for CloudFront domains
|
368 |
+
|
369 |
= 6.6.5 - 2018/07/02 =
|
370 |
|
371 |
* Feature - Handle WordPress video shortcodes option now also converts YouTube links
|
test/integration-7/backend/profileVideosTest.php
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once( dirname(__FILE__).'/../fv-player-unittest-case.php');
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Tests WordPress integration of playlists without any advertisements present
|
7 |
+
* in the HTML markup.
|
8 |
+
*/
|
9 |
+
final class FV_Player_ProfileVideosTestCase extends FV_Player_UnitTestCase {
|
10 |
+
|
11 |
+
public function testProfileScreen() {
|
12 |
+
global $fv_fp;
|
13 |
+
$fv_fp->conf['profile_videos_enable_bio'] = true;
|
14 |
+
|
15 |
+
// add new user and create last saved position metadata for this new user
|
16 |
+
$this->userID = $this->factory->user->create(array(
|
17 |
+
'role' => 'admin'
|
18 |
+
));
|
19 |
+
|
20 |
+
add_user_meta($this->userID, '_fv_player_user_video', '[fvplayer src="https://vimeo.com/255317467" playlist="https://vimeo.com/192934117" caption=";Talking about FV Player"]');
|
21 |
+
add_user_meta($this->userID, '_fv_player_user_video', '[fvplayer src="https://vimeo.com/255370388"]');
|
22 |
+
add_user_meta($this->userID, '_fv_player_user_video', '[fvplayer src="https://www.youtube.com/watch?v=6ZfuNTqbHE8"]]');
|
23 |
+
|
24 |
+
$profileuser = get_user_to_edit($this->userID);
|
25 |
+
|
26 |
+
ob_start();
|
27 |
+
apply_filters( 'show_password_fields', true, $profileuser );
|
28 |
+
$output = ob_get_clean();
|
29 |
+
|
30 |
+
$one = $this->fix_newlines(file_get_contents(dirname(__FILE__).'/testProfileScreen.html')); // this contains user ID of '4'
|
31 |
+
$two = explode("\n",$this->fix_newlines($output));
|
32 |
+
foreach( explode("\n",$one) as $k => $v ) {
|
33 |
+
|
34 |
+
/*if( $v != $two[$k]) {
|
35 |
+
for($i=0;$i<strlen($two[$k]);$i++) {
|
36 |
+
var_dump( $two[$k][$i].' '.ord($two[$k][$i]) );
|
37 |
+
}
|
38 |
+
}*/
|
39 |
+
|
40 |
+
//$this->assertEquals( $v, $two[$k] );
|
41 |
+
}
|
42 |
+
|
43 |
+
$this->assertEquals( $this->fix_newlines(file_get_contents(dirname(__FILE__).'/testProfileScreen.html')), $this->fix_newlines($output) );
|
44 |
+
|
45 |
+
}
|
46 |
+
|
47 |
+
}
|
test/integration-7/backend/settingsTest.php
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once( dirname(__FILE__).'/../fv-player-unittest-case.php');
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Tests WordPress integration of playlists without any advertisements present
|
7 |
+
* in the HTML markup.
|
8 |
+
*/
|
9 |
+
final class FV_Player_SettingsTestCase extends FV_Player_UnitTestCase {
|
10 |
+
|
11 |
+
// we need to convince it is showing the FV Player settings screen!
|
12 |
+
public static function wpSetUpBeforeClass() {
|
13 |
+
set_current_screen( 'settings_page_fvplayer' );
|
14 |
+
|
15 |
+
parent::wpSetUpBeforeClass();
|
16 |
+
|
17 |
+
remove_action( 'admin_init', 'wp_admin_headers' );
|
18 |
+
do_action( 'admin_init' );
|
19 |
+
}
|
20 |
+
|
21 |
+
public function testSettingsScreen() {
|
22 |
+
include( '../../../fv-wordpress-flowplayer/controller/backend.php' );
|
23 |
+
include( '../../../fv-wordpress-flowplayer/controller/editor.php' );
|
24 |
+
include( '../../../fv-wordpress-flowplayer/controller/settings.php' );
|
25 |
+
|
26 |
+
|
27 |
+
ob_start();
|
28 |
+
fv_player_admin_page();
|
29 |
+
$output = ob_get_clean();
|
30 |
+
|
31 |
+
$one = $this->fix_newlines(file_get_contents(dirname(__FILE__).'/testSettingsScreen.html'));
|
32 |
+
$two = explode("\n",$this->fix_newlines($output));
|
33 |
+
foreach( explode("\n",$one) as $k => $v ) {
|
34 |
+
|
35 |
+
/*if( $v != $two[$k]) {
|
36 |
+
for($i=0;$i<strlen($two[$k]);$i++) {
|
37 |
+
if( $v[$i] != $two[$k][$i]) {
|
38 |
+
var_dump( $v[$i].' vs '.$two[$k][$i].' '.ord($two[$k][$i]) );
|
39 |
+
}
|
40 |
+
}
|
41 |
+
}*/
|
42 |
+
|
43 |
+
$this->assertEquals( $v, $two[$k] );
|
44 |
+
}
|
45 |
+
|
46 |
+
$this->assertEquals( $this->fix_newlines(file_get_contents(dirname(__FILE__).'/testSettingsScreen.html')), $this->fix_newlines($output) );
|
47 |
+
}
|
48 |
+
|
49 |
+
}
|
test/integration-7/backend/testProfileScreen.html
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<tr class="user-videos">
|
2 |
+
<th>Videos</th>
|
3 |
+
<td>
|
4 |
+
<div class="fv-player-custom-video-list"><form method='POST'><div class="fv-player-custom-video"><div class='fv-player-editor-wrapper' data-key='fv-player-editor-field-_fv_player_user_video'>
|
5 |
+
<div class='inside inside-child'>
|
6 |
+
<div class='fv-player-editor-preview'><iframe id='fv_vimeo_40a1ea9c2827d8afc50536475564effe' src='//player.vimeo.com/video/255317467' width='640' height='360' frameborder='0' webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
7 |
+
</div>
|
8 |
+
<input class='attachement-shortcode fv-player-editor-field' name='fv_player_videos[_fv_player_user_video][]' type='hidden' value='[fvplayer src="https://vimeo.com/255317467" playlist="https://vimeo.com/192934117" caption=";Talking about FV Player"]' />
|
9 |
+
<div class='edit-video' >
|
10 |
+
<button class='button fv-player-editor-button'>Edit Video</button>
|
11 |
+
<button class='button fv-player-editor-remove'>Remove Video</button>
|
12 |
+
<button class='button fv-player-editor-more' style='display:none'>Add Another Video</button>
|
13 |
+
</div>
|
14 |
+
|
15 |
+
<div class='add-video' style="display:none">
|
16 |
+
<button class='button fv-player-editor-button'>Add Video</button>
|
17 |
+
</div>
|
18 |
+
</div>
|
19 |
+
</div><div class='fv-player-editor-wrapper' data-key='fv-player-editor-field-_fv_player_user_video'>
|
20 |
+
<div class='inside inside-child'>
|
21 |
+
<div class='fv-player-editor-preview'><iframe id='fv_vimeo_611247c19e9196fbf9433d589da255e1' src='//player.vimeo.com/video/255370388' width='640' height='360' frameborder='0' webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
22 |
+
</div>
|
23 |
+
<input class='attachement-shortcode fv-player-editor-field' name='fv_player_videos[_fv_player_user_video][]' type='hidden' value='[fvplayer src="https://vimeo.com/255370388"]' />
|
24 |
+
<div class='edit-video' >
|
25 |
+
<button class='button fv-player-editor-button'>Edit Video</button>
|
26 |
+
<button class='button fv-player-editor-remove'>Remove Video</button>
|
27 |
+
<button class='button fv-player-editor-more' style='display:none'>Add Another Video</button>
|
28 |
+
</div>
|
29 |
+
|
30 |
+
<div class='add-video' style="display:none">
|
31 |
+
<button class='button fv-player-editor-button'>Add Video</button>
|
32 |
+
</div>
|
33 |
+
</div>
|
34 |
+
</div><div class='fv-player-editor-wrapper' data-key='fv-player-editor-field-_fv_player_user_video'>
|
35 |
+
<div class='inside inside-child'>
|
36 |
+
<div class='fv-player-editor-preview'><iframe id='fv_ytplayer_5fc2c295c1c8d43b356a8b8ee0c122ca' type='text/html' width='640' height='360'
|
37 |
+
src='//www.youtube.com/embed/6ZfuNTqbHE8?origin=' frameborder='0' webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
38 |
+
]</div>
|
39 |
+
<input class='attachement-shortcode fv-player-editor-field' name='fv_player_videos[_fv_player_user_video][]' type='hidden' value='[fvplayer src="https://www.youtube.com/watch?v=6ZfuNTqbHE8"]]' />
|
40 |
+
<div class='edit-video' >
|
41 |
+
<button class='button fv-player-editor-button'>Edit Video</button>
|
42 |
+
<button class='button fv-player-editor-remove'>Remove Video</button>
|
43 |
+
<button class='button fv-player-editor-more' style='display:none'>Add Another Video</button>
|
44 |
+
</div>
|
45 |
+
|
46 |
+
<div class='add-video' style="display:none">
|
47 |
+
<button class='button fv-player-editor-button'>Add Video</button>
|
48 |
+
</div>
|
49 |
+
</div>
|
50 |
+
</div><div style="clear: both"></div>
|
51 |
+
</div>
|
52 |
+
<input type='hidden' name='fv-player-custom-videos-entity-id[_fv_player_user_video]' value='4' /><input type='hidden' name='fv-player-custom-videos-entity-type[_fv_player_user_video]' value='user' /><input type="hidden" id="fv-player-custom-videos-_fv_player_user_video-0" name="fv-player-custom-videos-_fv_player_user_video-0" value="0926bc6617" /><input type="hidden" name="_wp_http_referer" value="" /><input type='hidden' name='action' value='fv-player-custom-videos-save' /><input type='submit' value='Save Videos' /></form></div> <p class="description">You can put your Vimeo or YouTube links here. <abbr title="These show up as a part of the user bio. Licensed users get FV Player Pro which embeds these video types in FV Player interface without Vimeo or YouTube interface showing up."><span class="dashicons dashicons-editor-help"></span></abbr></p>
|
53 |
+
</td>
|
54 |
+
</tr>
|
test/integration-7/backend/testSettingsScreen.html
ADDED
@@ -0,0 +1,2053 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="wrap">
|
2 |
+
<div style="position: absolute; margin-top: 10px; right: 10px;">
|
3 |
+
<a href="https://foliovision.com/wordpress/plugins/fv-wordpress-flowplayer" target="_blank" title="Documentation"><img alt="visit foliovision" src="//foliovision.com/shared/fv-logo.png" /></a>
|
4 |
+
</div>
|
5 |
+
<div>
|
6 |
+
<div id="icon-options-general" class="icon32"></div>
|
7 |
+
<h2>FV Player</h2>
|
8 |
+
</div>
|
9 |
+
|
10 |
+
|
11 |
+
<form id="wpfp_options" method="post" action="">
|
12 |
+
|
13 |
+
<p id="fv_flowplayer_admin_buttons">
|
14 |
+
<input type="button" class="button fv-license-inactive" onclick="fv_flowplayer_ajax_check('fv_wp_flowplayer_check_license'); return false" value="Apply Pro upgrade" />
|
15 |
+
<input type="button" class="button" onclick="fv_flowplayer_ajax_check('fv_wp_flowplayer_check_template'); return false" value="Check template" />
|
16 |
+
<input type="button" class="button" onclick="fv_flowplayer_ajax_check('fv_wp_flowplayer_check_files')" value="Check videos" />
|
17 |
+
|
18 |
+
<input type="text" name="key" id="key" placeholder="Commercial License Key" value="" /> <a title="Click here for license info" target="_blank" href="https://foliovision.com/player/download"><span class="dashicons dashicons-editor-help"></span></a>
|
19 |
+
|
20 |
+
<img class="fv_wp_flowplayer_check_license-spin" style="display: none; " src="http://example.org/wp-includes/images/wpspin.gif" width="16" height="16" />
|
21 |
+
<img class="fv_wp_flowplayer_check_template-spin" style="display: none; " src="http://example.org/wp-includes/images/wpspin.gif" width="16" height="16" />
|
22 |
+
<img class="fv_wp_flowplayer_check_files-spin" style="display: none; " src="http://example.org/wp-includes/images/wpspin.gif" width="16" height="16" />
|
23 |
+
</p>
|
24 |
+
<div id="fv_flowplayer_admin_notices">
|
25 |
+
</div>
|
26 |
+
|
27 |
+
<div id="fv_flowplayer_ad">
|
28 |
+
<div class="text-part">
|
29 |
+
<h2>FV Wordpress<strong>Flowplayer</strong></h2>
|
30 |
+
<span class="red-text">with your own branding</span>
|
31 |
+
<ul>
|
32 |
+
<li>Put up your own logo</li>
|
33 |
+
<li>Or remove the logo completely</li>
|
34 |
+
<li>The best video plugin for Wordpress</li>
|
35 |
+
</ul>
|
36 |
+
<a href="http://foliovision.com/wordpress/plugins/fv-wordpress-flowplayer/download" class="red-button"><strong>Easter sale!</strong><br />All Licenses 20% Off</a></p>
|
37 |
+
</div>
|
38 |
+
<div class="graphic-part">
|
39 |
+
<a href="http://foliovision.com/wordpress/plugins/fv-wordpress-flowplayer/buy">
|
40 |
+
<img width="297" height="239" border="0" src="http://example.org/wp-content/plugins/fv-wordpress-flowplayer/images/fv-wp-flowplayer-led-monitor.png"> </a>
|
41 |
+
</div>
|
42 |
+
</div>
|
43 |
+
|
44 |
+
<div id="fv_flowplayer_admin_tabs">
|
45 |
+
<h2 class="fv-nav-tab-wrapper nav-tab-wrapper">
|
46 |
+
<a href="#postbox-container-tab_basic" class="nav-tab nav-tab-active" style="outline: 0px;">Setup</a>
|
47 |
+
<a href="#postbox-container-tab_skin" class="nav-tab" style="outline: 0px;">Skin</a>
|
48 |
+
<a href="#postbox-container-tab_hosting" class="nav-tab" style="outline: 0px;">Hosting</a>
|
49 |
+
<a href="#postbox-container-tab_actions" class="nav-tab" style="outline: 0px;">Actions</a>
|
50 |
+
<a href="#postbox-container-tab_video_intelligence" class="nav-tab" style="outline: 0px;">vi Ads</a>
|
51 |
+
<a href="#postbox-container-tab_help" class="nav-tab" style="outline: 0px;">Help</a>
|
52 |
+
<div id="fv_player_js_warning" style=" margin: 8px 40px; display: inline-block; color: darkgrey;" >There Is a Problem with JavaScript.</div>
|
53 |
+
</h2>
|
54 |
+
</div>
|
55 |
+
|
56 |
+
<div id="dashboard-widgets" class="metabox-holder fv-metabox-holder columns-1">
|
57 |
+
<div id='postbox-container-tab_basic' class='postbox-container'>
|
58 |
+
<div id="normal-sortables" class="meta-box-sortables"><div id="fv_flowplayer_description" class="postbox " >
|
59 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: </span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span> </span></h2>
|
60 |
+
<div class="inside">
|
61 |
+
<table class="form-table">
|
62 |
+
<tr>
|
63 |
+
<td colspan="4">
|
64 |
+
<p>
|
65 |
+
FV Player is a free, easy-to-use, and complete solution for embedding <strong>MP4</strong>, <strong>WEBM</strong>, <strong>OGV</strong>, <strong>MOV</strong>
|
66 |
+
and <strong>FLV</strong>
|
67 |
+
videos into your posts or pages. With MP4 videos, FV Player offers 98% coverage even on mobile devices. </p>
|
68 |
+
</td>
|
69 |
+
</tr>
|
70 |
+
</table>
|
71 |
+
</div>
|
72 |
+
</div>
|
73 |
+
<div id="fv_flowplayer_interface_options" class="postbox " >
|
74 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Post Interface Options</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Post Interface Options</span></h2>
|
75 |
+
<div class="inside">
|
76 |
+
<p>Which features should be available in shortcode editor?</p>
|
77 |
+
<table class="form-table2">
|
78 |
+
<tr>
|
79 |
+
<td class="first"><label for="interface[ads]">Ads:</label></td>
|
80 |
+
<td>
|
81 |
+
<p class="description">
|
82 |
+
<input type="hidden" name="interface[ads]" value="false"/>
|
83 |
+
<input type="checkbox" name="interface[ads]" id="interface[ads]" value="true" />
|
84 |
+
</p>
|
85 |
+
</td>
|
86 |
+
</tr>
|
87 |
+
<tr>
|
88 |
+
<td class="first"><label for="interface[align]">Align:</label></td>
|
89 |
+
<td>
|
90 |
+
<p class="description">
|
91 |
+
<input type="hidden" name="interface[align]" value="false"/>
|
92 |
+
<input type="checkbox" name="interface[align]" id="interface[align]" value="true" />
|
93 |
+
</p>
|
94 |
+
</td>
|
95 |
+
</tr>
|
96 |
+
<tr>
|
97 |
+
<td class="first"><label for="allowuploads">Allow Video Uploads:</label></td>
|
98 |
+
<td>
|
99 |
+
<p class="description">
|
100 |
+
<input type="hidden" name="allowuploads" value="false"/>
|
101 |
+
<input type="checkbox" name="allowuploads" id="allowuploads" value="true" checked="checked" />
|
102 |
+
Enables the WP Media Library integraton if you want to host videos on your own server </p>
|
103 |
+
</td>
|
104 |
+
</tr>
|
105 |
+
<tr>
|
106 |
+
<td class="first"><label for="interface[autoplay]">Autoplay:</label></td>
|
107 |
+
<td>
|
108 |
+
<p class="description">
|
109 |
+
<input type="hidden" name="interface[autoplay]" value="false"/>
|
110 |
+
<input type="checkbox" name="interface[autoplay]" id="interface[autoplay]" value="true" />
|
111 |
+
</p>
|
112 |
+
</td>
|
113 |
+
</tr>
|
114 |
+
<tr>
|
115 |
+
<td class="first"><label for="interface[controlbar]">Controlbar:</label></td>
|
116 |
+
<td>
|
117 |
+
<p class="description">
|
118 |
+
<input type="hidden" name="interface[controlbar]" value="false"/>
|
119 |
+
<input type="checkbox" name="interface[controlbar]" id="interface[controlbar]" value="true" />
|
120 |
+
</p>
|
121 |
+
</td>
|
122 |
+
</tr>
|
123 |
+
<tr>
|
124 |
+
<td class="first"><label for="interface[embed]">Embed:</label></td>
|
125 |
+
<td>
|
126 |
+
<p class="description">
|
127 |
+
<input type="hidden" name="interface[embed]" value="false"/>
|
128 |
+
<input type="checkbox" name="interface[embed]" id="interface[embed]" value="true" />
|
129 |
+
</p>
|
130 |
+
</td>
|
131 |
+
</tr>
|
132 |
+
<tr>
|
133 |
+
<td class="first"><label for="interface[live]">Live Stream:</label></td>
|
134 |
+
<td>
|
135 |
+
<p class="description">
|
136 |
+
<input type="hidden" name="interface[live]" value="false"/>
|
137 |
+
<input type="checkbox" name="interface[live]" id="interface[live]" value="true" />
|
138 |
+
</p>
|
139 |
+
</td>
|
140 |
+
</tr>
|
141 |
+
<tr>
|
142 |
+
<td class="first"><label for="interface[mobile]">Mobile Video:</label></td>
|
143 |
+
<td>
|
144 |
+
<p class="description">
|
145 |
+
<input type="hidden" name="interface[mobile]" value="false"/>
|
146 |
+
<input type="checkbox" name="interface[mobile]" id="interface[mobile]" value="true" />
|
147 |
+
</p>
|
148 |
+
</td>
|
149 |
+
</tr>
|
150 |
+
<tr>
|
151 |
+
<td class="first"><label for="interface[playlist_advance]">Playlist Auto Advance:</label></td>
|
152 |
+
<td>
|
153 |
+
<p class="description">
|
154 |
+
<input type="hidden" name="interface[playlist_advance]" value="false"/>
|
155 |
+
<input type="checkbox" name="interface[playlist_advance]" id="interface[playlist_advance]" value="true" />
|
156 |
+
</p>
|
157 |
+
</td>
|
158 |
+
</tr>
|
159 |
+
<tr>
|
160 |
+
<td class="first"><label for="interface[playlist]">Playlist Style:</label></td>
|
161 |
+
<td>
|
162 |
+
<p class="description">
|
163 |
+
<input type="hidden" name="interface[playlist]" value="false"/>
|
164 |
+
<input type="checkbox" name="interface[playlist]" id="interface[playlist]" value="true" />
|
165 |
+
</p>
|
166 |
+
</td>
|
167 |
+
</tr>
|
168 |
+
<tr>
|
169 |
+
<td class="first"><label for="interface[playlist_captions]">Playlist Captions:</label></td>
|
170 |
+
<td>
|
171 |
+
<p class="description">
|
172 |
+
<input type="hidden" name="interface[playlist_captions]" value="false"/>
|
173 |
+
<input type="checkbox" name="interface[playlist_captions]" id="interface[playlist_captions]" value="true" />
|
174 |
+
</p>
|
175 |
+
</td>
|
176 |
+
</tr>
|
177 |
+
<tr>
|
178 |
+
<td class="first"><label for="interface[share]">Sharing Buttons:</label></td>
|
179 |
+
<td>
|
180 |
+
<p class="description">
|
181 |
+
<input type="hidden" name="interface[share]" value="false"/>
|
182 |
+
<input type="checkbox" name="interface[share]" id="interface[share]" value="true" />
|
183 |
+
</p>
|
184 |
+
</td>
|
185 |
+
</tr>
|
186 |
+
<tr>
|
187 |
+
<td class="first"><label for="interface[speed]">Speed Buttons:</label></td>
|
188 |
+
<td>
|
189 |
+
<p class="description">
|
190 |
+
<input type="hidden" name="interface[speed]" value="false"/>
|
191 |
+
<input type="checkbox" name="interface[speed]" id="interface[speed]" value="true" />
|
192 |
+
</p>
|
193 |
+
</td>
|
194 |
+
</tr>
|
195 |
+
<tr>
|
196 |
+
<td class="first"><label for="interface[splash_text]">Splash Text:</label></td>
|
197 |
+
<td>
|
198 |
+
<p class="description">
|
199 |
+
<input type="hidden" name="interface[splash_text]" value="false"/>
|
200 |
+
<input type="checkbox" name="interface[splash_text]" id="interface[splash_text]" value="true" />
|
201 |
+
</p>
|
202 |
+
</td>
|
203 |
+
</tr>
|
204 |
+
<tr>
|
205 |
+
<td class="first"><label for="interface[subtitles]">Subtitles:</label></td>
|
206 |
+
<td>
|
207 |
+
<p class="description">
|
208 |
+
<input type="hidden" name="interface[subtitles]" value="false"/>
|
209 |
+
<input type="checkbox" name="interface[subtitles]" id="interface[subtitles]" value="true" />
|
210 |
+
</p>
|
211 |
+
</td>
|
212 |
+
</tr>
|
213 |
+
<tr>
|
214 |
+
<td class="first"><label for="interface[sticky]">Sticky:</label></td>
|
215 |
+
<td>
|
216 |
+
<p class="description">
|
217 |
+
<input type="hidden" name="interface[sticky]" value="false"/>
|
218 |
+
<input type="checkbox" name="interface[sticky]" id="interface[sticky]" value="true" />
|
219 |
+
</p>
|
220 |
+
</td>
|
221 |
+
</tr>
|
222 |
+
<tr>
|
223 |
+
<td class="first"><label for="interface[end_actions]">Video Actions:</label></td>
|
224 |
+
<td>
|
225 |
+
<p class="description">
|
226 |
+
<input type="hidden" name="interface[end_actions]" value="false"/>
|
227 |
+
<input type="checkbox" name="interface[end_actions]" id="interface[end_actions]" value="true" />
|
228 |
+
Enables end of playlist actions like Loop, Redirect, Show popup and Show splash screen </p>
|
229 |
+
</td>
|
230 |
+
</tr>
|
231 |
+
|
232 |
+
<tr>
|
233 |
+
<td class="first"><label for="interface[lightbox]">Enable video lightbox:</label></td>
|
234 |
+
<td>
|
235 |
+
<p class="description">
|
236 |
+
<input type="hidden" name="interface[lightbox]" value="false"/>
|
237 |
+
<input type="checkbox" name="interface[lightbox]" id="interface[lightbox]" value="true" />
|
238 |
+
You can also put in <code><a href="http://path.to.your/video.mp4" class="colorbox">Your link title</a></code> for a quick lightboxed video. </p>
|
239 |
+
</td>
|
240 |
+
</tr>
|
241 |
+
|
242 |
+
<tr>
|
243 |
+
<td class="first"><label for="interface[shortcode_editor_old]">Enable old interface:</label></td>
|
244 |
+
<td>
|
245 |
+
<p class="description">
|
246 |
+
<input type="hidden" name="interface[shortcode_editor_old]" value="false"/>
|
247 |
+
<input type="checkbox" name="interface[shortcode_editor_old]" id="interface[shortcode_editor_old]" value="true" />
|
248 |
+
Not recommended </p>
|
249 |
+
</td>
|
250 |
+
</tr>
|
251 |
+
|
252 |
+
<tr>
|
253 |
+
<td colspan="4">
|
254 |
+
<input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
|
255 |
+
</td>
|
256 |
+
</tr>
|
257 |
+
</table>
|
258 |
+
</div>
|
259 |
+
</div>
|
260 |
+
<div id="fv_flowplayer_default_options" class="postbox " >
|
261 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Sitewide FV Player Defaults</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Sitewide FV Player Defaults</span></h2>
|
262 |
+
<div class="inside">
|
263 |
+
<style>
|
264 |
+
p.description { font-style: normal; }
|
265 |
+
</style>
|
266 |
+
<table class="form-table2">
|
267 |
+
|
268 |
+
<tr>
|
269 |
+
<td class="first"><label for="autoplay">Autoplay:</label></td>
|
270 |
+
<td>
|
271 |
+
<p class="description">
|
272 |
+
<input type="hidden" name="autoplay" value="false"/>
|
273 |
+
<input type="checkbox" name="autoplay" id="autoplay" value="true" />
|
274 |
+
We make sure only one video per page autoplays. Note that mobile devices don't support autoplay. </p>
|
275 |
+
</td>
|
276 |
+
</tr>
|
277 |
+
<tr>
|
278 |
+
<td class="first"><label for="auto_buffering">Auto Buffering:</label></td>
|
279 |
+
<td>
|
280 |
+
<p class="description">
|
281 |
+
<input type="hidden" name="auto_buffering" value="false"/>
|
282 |
+
<input type="checkbox" name="auto_buffering" id="auto_buffering" value="true" />
|
283 |
+
Works for first 2 videos on the page only, to preserve your bandwidth. </p>
|
284 |
+
</td>
|
285 |
+
</tr>
|
286 |
+
|
287 |
+
<tr>
|
288 |
+
<td><label for="width">Default Video Size:</label></td>
|
289 |
+
<td>
|
290 |
+
<p class="description">
|
291 |
+
<label for="width">Width:</label> <input type="text" class="small" name="width" id="width" value="640" />
|
292 |
+
<label for="height">Height:</label> <input type="text" class="small" name="height" id="height" value="360" />
|
293 |
+
Enter values in pixels or 100%. </p>
|
294 |
+
</td>
|
295 |
+
</tr>
|
296 |
+
<tr>
|
297 |
+
<td><label for="volume">Default Volume:</label></td>
|
298 |
+
<td>
|
299 |
+
<p class="description">
|
300 |
+
<input id="volume" name="volume" type="range" min="0" max="1" step="0.1" value="0.7" class="medium" />
|
301 |
+
</p>
|
302 |
+
</td>
|
303 |
+
</tr>
|
304 |
+
|
305 |
+
<tr>
|
306 |
+
<td class="first"><label for="disable_videochecker">Disable Admin Video Checker:</label></td>
|
307 |
+
<td>
|
308 |
+
<p class="description">
|
309 |
+
<input type="hidden" name="disable_videochecker" value="false"/>
|
310 |
+
<input type="checkbox" name="disable_videochecker" id="disable_videochecker" value="true" />
|
311 |
+
Checks your video encoding when you open a post with video as admin. Notifies you about possible playback issues. </p>
|
312 |
+
</td>
|
313 |
+
</tr>
|
314 |
+
<tr>
|
315 |
+
<td class="first"><label for="disableembedding">Disable Embed Button:</label></td>
|
316 |
+
<td>
|
317 |
+
<p class="description">
|
318 |
+
<input type="hidden" name="disableembedding" value="false"/>
|
319 |
+
<input type="checkbox" name="disableembedding" id="disableembedding" value="true" />
|
320 |
+
Removes embed button from top bar. </p>
|
321 |
+
</td>
|
322 |
+
</tr>
|
323 |
+
<tr>
|
324 |
+
<td class="first"><label for="playlist_advance">Disable Playlist Autoadvance:</label></td>
|
325 |
+
<td>
|
326 |
+
<p class="description">
|
327 |
+
<input type="hidden" name="playlist_advance" value="false"/>
|
328 |
+
<input type="checkbox" name="playlist_advance" id="playlist_advance" value="true" />
|
329 |
+
Playlist won't play the next video automatically. </p>
|
330 |
+
</td>
|
331 |
+
</tr>
|
332 |
+
<tr>
|
333 |
+
<td class="first"><label for="disablesharing">Disable Sharing:</label></td>
|
334 |
+
<td>
|
335 |
+
<p class="description">
|
336 |
+
<input type="hidden" name="disablesharing" value="false"/>
|
337 |
+
<input type="checkbox" name="disablesharing" id="disablesharing" value="true" />
|
338 |
+
Removes sharing buttons from top bar. </p>
|
339 |
+
</td>
|
340 |
+
</tr>
|
341 |
+
<tr>
|
342 |
+
<td class="first"><label for="disable_video_hash_links">Disable Video Links:</label></td>
|
343 |
+
<td>
|
344 |
+
<p class="description">
|
345 |
+
<input type="hidden" name="disable_video_hash_links" value="false"/>
|
346 |
+
<input type="checkbox" name="disable_video_hash_links" id="disable_video_hash_links" value="true" />
|
347 |
+
Removes the "Link" item to the top bar. <span class="more">Clicking the video Link gives your visitors a link to the exact place in the video they are watching. If the post access is restricted, it won't make the video open to public.</span> <a href="#" class="show-more">(…)</a>
|
348 |
+
</p>
|
349 |
+
</td>
|
350 |
+
</tr>
|
351 |
+
|
352 |
+
<tr>
|
353 |
+
<td><label for="rtmp">Flash Streaming Server:</label></td>
|
354 |
+
<td>
|
355 |
+
<p class="description">
|
356 |
+
<input type="text" name="rtmp" id="rtmp" value="" placeholder="Enter your default RTMP streaming server (Amazon CloudFront domain)." />
|
357 |
+
</p>
|
358 |
+
</td>
|
359 |
+
</tr>
|
360 |
+
|
361 |
+
<tr>
|
362 |
+
<td class="first"><label for="allowfullscreen">Fullscreen Button:</label></td>
|
363 |
+
<td>
|
364 |
+
<p class="description">
|
365 |
+
<input type="hidden" name="allowfullscreen" value="false"/>
|
366 |
+
<input type="checkbox" name="allowfullscreen" id="allowfullscreen" value="true" checked="checked" />
|
367 |
+
Adds fullscreen button to player top bar. </p>
|
368 |
+
</td>
|
369 |
+
</tr>
|
370 |
+
|
371 |
+
<tr>
|
372 |
+
<td><label for="googleanalytics">Google Analytics ID:</label></td>
|
373 |
+
<td>
|
374 |
+
<p class="description">
|
375 |
+
<input type="text" name="googleanalytics" id="googleanalytics" value="" placeholder="Will be automatically loaded when playing a video." />
|
376 |
+
</p>
|
377 |
+
</td>
|
378 |
+
</tr>
|
379 |
+
<tr>
|
380 |
+
<td><label for="logo">Logo:</label></td>
|
381 |
+
<td>
|
382 |
+
<input type="text" name="logo" id="logo" value="" class="large" placeholder="You need to have a FV Flowplayer license to use it" />
|
383 |
+
|
384 |
+
<input id="upload_image_button" class="upload_image_button button no-margin small" type="button" value="Upload Image" alt="Select Logo" />
|
385 |
+
|
386 |
+
<select name="logoPosition" class="small">
|
387 |
+
<option value="bottom-left">Position</option>
|
388 |
+
<option selected value="bottom-left">Bottom-left</option>
|
389 |
+
<option value="bottom-right">Bottom-right</option>
|
390 |
+
<option value="top-left">Top-left</option>
|
391 |
+
<option value="top-right">Top-right</option>
|
392 |
+
</select>
|
393 |
+
</td>
|
394 |
+
</tr>
|
395 |
+
|
396 |
+
<tr>
|
397 |
+
<td class="first"><label for="ui_play_button">Play Button:</label></td>
|
398 |
+
<td>
|
399 |
+
<p class="description">
|
400 |
+
<input type="hidden" name="ui_play_button" value="false"/>
|
401 |
+
<input type="checkbox" name="ui_play_button" id="ui_play_button" value="true" checked="checked" />
|
402 |
+
Adds play button to player controlbar. </p>
|
403 |
+
</td>
|
404 |
+
</tr>
|
405 |
+
|
406 |
+
<tr>
|
407 |
+
<td><label for="liststyle">Playlist style:</label></td>
|
408 |
+
<td colspan="3">
|
409 |
+
<p class="description">
|
410 |
+
<select id="liststyle" name="liststyle">
|
411 |
+
<option value="horizontal" selected="selected" >Horizontal</option>
|
412 |
+
<option value="tabs" >Tabs</option>
|
413 |
+
<option value="prevnext" >Prev/Next</option>
|
414 |
+
<option value="vertical" >Vertical</option>
|
415 |
+
<option value="slider" >Slider</option>
|
416 |
+
</select>
|
417 |
+
Enter your default playlist style here </p>
|
418 |
+
</td>
|
419 |
+
</tr>
|
420 |
+
|
421 |
+
<tr>
|
422 |
+
<td class="first"><label for="popupbox">Popup Box:</label></td>
|
423 |
+
<td>
|
424 |
+
<p class="description">
|
425 |
+
<input type="hidden" name="popupbox" value="false"/>
|
426 |
+
<input type="checkbox" name="popupbox" id="popupbox" value="true" />
|
427 |
+
Shows a generic "Would you like to replay the video?" message at the end of each video. </p>
|
428 |
+
</td>
|
429 |
+
</tr>
|
430 |
+
|
431 |
+
<tr>
|
432 |
+
<td><label for="sharing_text">Sharing Text:</label></td>
|
433 |
+
<td>
|
434 |
+
<p class="description">
|
435 |
+
<input type="text" name="sharing_email_text" id="sharing_email_text" value="Check out the amazing video here" placeholder="Check out the amazing video here" />
|
436 |
+
</p>
|
437 |
+
</td>
|
438 |
+
</tr>
|
439 |
+
|
440 |
+
<tr>
|
441 |
+
<td class="first"><label for="ui_speed">Speed Buttons:</label></td>
|
442 |
+
<td>
|
443 |
+
<p class="description">
|
444 |
+
<input type="hidden" name="ui_speed" value="false"/>
|
445 |
+
<input type="checkbox" name="ui_speed" id="ui_speed" value="true" />
|
446 |
+
Speed buttons control playback speed and only work in HTML5 compatible browsers. </p>
|
447 |
+
</td>
|
448 |
+
</tr>
|
449 |
+
|
450 |
+
<tr>
|
451 |
+
<td><label for="ui_speed_increment">Speed Step:</label></td>
|
452 |
+
<td colspan="3">
|
453 |
+
<p class="description">
|
454 |
+
<select id="ui_speed_increment" name="ui_speed_increment">
|
455 |
+
<option value="0.1" >0.1</option>
|
456 |
+
<option value="0.25" selected="selected" >0.25</option>
|
457 |
+
<option value="0.5" >0.5</option>
|
458 |
+
</select>
|
459 |
+
Speed buttons will increase or decrease the speed in steps of selected value </p>
|
460 |
+
</td>
|
461 |
+
</tr>
|
462 |
+
<tr>
|
463 |
+
<td><label for="splash">Splash Image:</label></td>
|
464 |
+
<td>
|
465 |
+
<input type="text" name="splash" id="splash" value="" class="large" placeholder="Default which will be used for any player without its own splash image." />
|
466 |
+
<input id="upload_image_button" class="upload_image_button button no-margin small" type="button" value="Upload Image" alt="Select default Splash Screen" /></td>
|
467 |
+
</tr>
|
468 |
+
|
469 |
+
<tr>
|
470 |
+
<td class="first"><label for="subtitleOn">Subtitles On By Default:</label></td>
|
471 |
+
<td>
|
472 |
+
<p class="description">
|
473 |
+
<input type="hidden" name="subtitleOn" value="false"/>
|
474 |
+
<input type="checkbox" name="subtitleOn" id="subtitleOn" value="true" />
|
475 |
+
Normally you have to hit a button in controlbar to turn on subtitles. </p>
|
476 |
+
</td>
|
477 |
+
</tr>
|
478 |
+
|
479 |
+
<tr>
|
480 |
+
<td style="width: 250px"><label for="lightbox_images">Use video lightbox for images as well:</label></td>
|
481 |
+
<td>
|
482 |
+
<p class="description">
|
483 |
+
<input type="hidden" value="false" name="lightbox_images" />
|
484 |
+
<input type="checkbox" value="true" name="lightbox_images" id="lightbox_images" />
|
485 |
+
Will group images as well as videos into the same lightbox gallery. Turn <strong>off</strong> your lightbox plugin when using this. <span class="more">Also works with WordPress <code>[gallery]</code> galleries - these are automatically switched to link to image URLs rather than the attachment pages.</span> <a href="#" class="show-more">(…)</a>
|
486 |
+
</p>
|
487 |
+
</td>
|
488 |
+
</tr>
|
489 |
+
<tr id="lightbox-wp-galleries">
|
490 |
+
<td style="width: 250px"><label for="lightbox_improve_galleries">Use video lightbox for WP Galleries:</label></td>
|
491 |
+
<td>
|
492 |
+
<p class="description">
|
493 |
+
<input type="hidden" value="false" name="lightbox_improve_galleries" />
|
494 |
+
<input type="checkbox" value="true" name="lightbox_improve_galleries" id="lightbox_improve_galleries" />
|
495 |
+
Your gallery items will link to image files directly to allow this. </p>
|
496 |
+
</td>
|
497 |
+
</tr>
|
498 |
+
<script>
|
499 |
+
jQuery(document).ready(function(){
|
500 |
+
jQuery('[name="pro[interface][lightbox]"]').parents('td').replaceWith('<td><p>Setting <a href="#interface[live]">moved</a></p></td>');
|
501 |
+
jQuery('[name="pro[lightbox_images]"]').parents('td').replaceWith('<td><p>Setting <a href="#subtitleOn">moved</a></p></td>');
|
502 |
+
var lightbox_images = jQuery('#lightbox_images');
|
503 |
+
if(lightbox_images.attr('checked')){
|
504 |
+
jQuery('#lightbox-wp-galleries').show();
|
505 |
+
}else{
|
506 |
+
jQuery('#lightbox-wp-galleries').hide();
|
507 |
+
}
|
508 |
+
lightbox_images.on('click',function(){
|
509 |
+
if(jQuery(this).attr('checked')){
|
510 |
+
jQuery('#lightbox-wp-galleries').show();
|
511 |
+
}else{
|
512 |
+
jQuery('#lightbox-wp-galleries').hide();
|
513 |
+
}
|
514 |
+
})
|
515 |
+
})
|
516 |
+
</script>
|
517 |
+
<tr>
|
518 |
+
<td class="first"><label for="video_position_save_enable">Remember video position:</label></td>
|
519 |
+
<td>
|
520 |
+
<p class="description">
|
521 |
+
<input type="hidden" name="video_position_save_enable" value="false"/>
|
522 |
+
<input type="checkbox" name="video_position_save_enable" id="video_position_save_enable" value="true" />
|
523 |
+
Stores the last video play position for users, so they can continue watching from where they left. <span class="more">It stored in usermeta for logged in users and in a localStorage or cookie for guest users.</span> <a href="#" class="show-more">(…)</a>
|
524 |
+
</p>
|
525 |
+
</td>
|
526 |
+
</tr>
|
527 |
+
</table>
|
528 |
+
<small class="alignright">
|
529 |
+
Missing settings? Check <a class="fv-settings-anchor" href="#fv_flowplayer_integrations">Integrations/Compatbility</a> box below. </small>
|
530 |
+
<table class="form-table2">
|
531 |
+
<tr>
|
532 |
+
<td colspan="4">
|
533 |
+
<input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
|
534 |
+
</td>
|
535 |
+
</tr>
|
536 |
+
</table>
|
537 |
+
<script>
|
538 |
+
jQuery(document).ready(function($) {
|
539 |
+
var fv_flowplayer_uploader;
|
540 |
+
var fv_flowplayer_uploader_button;
|
541 |
+
|
542 |
+
$(document).on( 'click', '.upload_image_button', function(e) {
|
543 |
+
e.preventDefault();
|
544 |
+
|
545 |
+
fv_flowplayer_uploader_button = jQuery(this);
|
546 |
+
jQuery('.fv_flowplayer_target').removeClass('fv_flowplayer_target' );
|
547 |
+
fv_flowplayer_uploader_button.parents('tr').find('input[type=text]').addClass('fv_flowplayer_target' );
|
548 |
+
|
549 |
+
//If the uploader object has already been created, reopen the dialog
|
550 |
+
if (fv_flowplayer_uploader) {
|
551 |
+
fv_flowplayer_uploader.open();
|
552 |
+
return;
|
553 |
+
}
|
554 |
+
|
555 |
+
//Extend the wp.media object
|
556 |
+
fv_flowplayer_uploader = wp.media.frames.file_frame = wp.media({
|
557 |
+
title: 'Pick the image',
|
558 |
+
button: {
|
559 |
+
text: 'Choose'
|
560 |
+
},
|
561 |
+
multiple: false
|
562 |
+
});
|
563 |
+
|
564 |
+
fv_flowplayer_uploader.on('open', function() {
|
565 |
+
jQuery('.media-frame-title h1').text(fv_flowplayer_uploader_button.attr('alt'));
|
566 |
+
});
|
567 |
+
|
568 |
+
//When a file is selected, grab the URL and set it as the text field's value
|
569 |
+
fv_flowplayer_uploader.on('select', function() {
|
570 |
+
attachment = fv_flowplayer_uploader.state().get('selection').first().toJSON();
|
571 |
+
|
572 |
+
$('.fv_flowplayer_target').val(attachment.url);
|
573 |
+
$('.fv_flowplayer_target').removeClass('fv_flowplayer_target' );
|
574 |
+
|
575 |
+
/*if( attachment.type == 'video' ) {
|
576 |
+
if( typeof(attachment.width) != "undefined" && attachment.width > 0 ) {
|
577 |
+
$('#fv_wp_flowplayer_field_width').val(attachment.width);
|
578 |
+
}
|
579 |
+
if( typeof(attachment.height) != "undefined" && attachment.height > 0 ) {
|
580 |
+
$('#fv_wp_flowplayer_field_height').val(attachment.height);
|
581 |
+
}
|
582 |
+
if( typeof(attachment.fileLength) != "undefined" ) {
|
583 |
+
$('#fv_wp_flowplayer_file_info').show();
|
584 |
+
$('#fv_wp_flowplayer_file_duration').html(attachment.fileLength);
|
585 |
+
}
|
586 |
+
if( typeof(attachment.filesizeHumanReadable) != "undefined" ) {
|
587 |
+
$('#fv_wp_flowplayer_file_info').show();
|
588 |
+
$('#fv_wp_flowplayer_file_size').html(attachment.filesizeHumanReadable);
|
589 |
+
}
|
590 |
+
|
591 |
+
} else if( attachment.type == 'image' && typeof(fv_flowplayer_set_post_thumbnail_id) != "undefined" ) {
|
592 |
+
if( jQuery('#remove-post-thumbnail').length > 0 ){
|
593 |
+
return;
|
594 |
+
}
|
595 |
+
jQuery.post(ajaxurl, {
|
596 |
+
action:"set-post-thumbnail",
|
597 |
+
post_id: fv_flowplayer_set_post_thumbnail_id,
|
598 |
+
thumbnail_id: attachment.id,
|
599 |
+
_ajax_nonce: fv_flowplayer_set_post_thumbnail_nonce,
|
600 |
+
cookie: encodeURIComponent(document.cookie)
|
601 |
+
}, function(str){
|
602 |
+
var win = window.dialogArguments || opener || parent || top;
|
603 |
+
if ( str == '0' ) {
|
604 |
+
alert( setPostThumbnailL10n.error );
|
605 |
+
} else {
|
606 |
+
jQuery('#postimagediv .inside').html(str);
|
607 |
+
jQuery('#postimagediv .inside #plupload-upload-ui').hide();
|
608 |
+
}
|
609 |
+
} );
|
610 |
+
|
611 |
+
}*/
|
612 |
+
|
613 |
+
});
|
614 |
+
|
615 |
+
//Open the uploader dialog
|
616 |
+
fv_flowplayer_uploader.open();
|
617 |
+
|
618 |
+
});
|
619 |
+
|
620 |
+
});
|
621 |
+
</script>
|
622 |
+
<div class="clear"></div>
|
623 |
+
</div>
|
624 |
+
</div>
|
625 |
+
<div id="fv_flowplayer_integrations" class="postbox " >
|
626 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Integrations/Compatibility</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Integrations/Compatibility</span></h2>
|
627 |
+
<div class="inside">
|
628 |
+
<p>Following options are suitable for web developers and programmers.</p>
|
629 |
+
<table class="form-table2">
|
630 |
+
|
631 |
+
<tr>
|
632 |
+
<td class="first"><label for="fixed_size">Always use fixed size player:</label></td>
|
633 |
+
<td>
|
634 |
+
<p class="description">
|
635 |
+
<input type="hidden" name="fixed_size" value="false"/>
|
636 |
+
<input type="checkbox" name="fixed_size" id="fixed_size" value="true" />
|
637 |
+
Enable to force video size at cost of loosing the video responsiveness. </p>
|
638 |
+
</td>
|
639 |
+
</tr>
|
640 |
+
<tr>
|
641 |
+
<td class="first"><label for="css_disable">Disable saving skin CSS to a static file:</label></td>
|
642 |
+
<td>
|
643 |
+
<p class="description">
|
644 |
+
<input type="hidden" name="css_disable" value="false"/>
|
645 |
+
<input type="checkbox" name="css_disable" id="css_disable" value="true" />
|
646 |
+
Normally the player CSS configuration is stored in wp-content/fv-player-custom/style-{blog_id}.css. <span class="more">We do this to avoid a big style tag in your site <head>. Don't edit this file though, as it will be overwritten by plugin update or saving its options!</span> <a href="#" class="show-more">(…)</a>
|
647 |
+
</p>
|
648 |
+
</td>
|
649 |
+
</tr>
|
650 |
+
<tr>
|
651 |
+
<td class="first"><label for="hlsjs">Enable HLS.js:</label></td>
|
652 |
+
<td>
|
653 |
+
<p class="description">
|
654 |
+
<input type="hidden" name="hlsjs" value="false"/>
|
655 |
+
<input type="checkbox" name="hlsjs" id="hlsjs" value="true" checked="checked" />
|
656 |
+
Allows HLS playback in all modern browsers. <span class="more">HLS normally plays only on iOS, Mac Safari and new Android versions. FV Player increases the compatibility by using Flash engine for HLS. With this option you can go even further and modern browsers supporting MediaSource will play HLS even without Flash. Make sure you setup the required CORS headers.</span> <a href="#" class="show-more">(…)</a>
|
657 |
+
</p>
|
658 |
+
</td>
|
659 |
+
</tr>
|
660 |
+
|
661 |
+
<tr>
|
662 |
+
<td><label for="css_disable">Enable profile videos:</label></td>
|
663 |
+
<td>
|
664 |
+
<div class="description">
|
665 |
+
<input type="hidden" name="profile_videos_enable_bio" value="false" />
|
666 |
+
<input type="checkbox" name="profile_videos_enable_bio" id="profile_videos_enable_bio" value="true" />
|
667 |
+
Check your site carefully after enabling. Videos attached to the user profile will be showing as a part of the user bio. <a href="#" class="show-more">(…)</a>
|
668 |
+
<div class="more">
|
669 |
+
<p>This feature is designed for YouTube and Vimeo videos and works best for our licensed users who get these videos playing without YouTube or Vimeo branding.</p>
|
670 |
+
<p>Some themes show author bio on the author post archive automatically (Genesis framework and others). Or you can also just put this code into your theme archive.php template, right before <code>while ( have_posts() )</code> is called:</p>
|
671 |
+
<blockquote>
|
672 |
+
<pre>
|
673 |
+
<?php if ( is_author() && get_the_author_meta( 'description' ) ) : ?>
|
674 |
+
<div class="author-info">
|
675 |
+
<div class="author-avatar">
|
676 |
+
<?php echo get_avatar( get_the_author_meta( 'user_email' ) ); ?>
|
677 |
+
</div>
|
678 |
+
|
679 |
+
<div class="author-description">
|
680 |
+
<?php the_author_meta( 'description' ); ?>
|
681 |
+
</div>
|
682 |
+
</div>
|
683 |
+
<?php endif; ?>
|
684 |
+
</pre>
|
685 |
+
</blockquote>
|
686 |
+
<p>We will be adding integration for it for popular user profile plugins.</p>
|
687 |
+
|
688 |
+
</div>
|
689 |
+
</div>
|
690 |
+
</td>
|
691 |
+
</tr>
|
692 |
+
|
693 |
+
<tr>
|
694 |
+
<td class="first"><label for="integrations[wp_core_video]">Handle WordPress <code><small>[video]</small></code> shortcodes:</label></td>
|
695 |
+
<td>
|
696 |
+
<p class="description">
|
697 |
+
<input type="hidden" name="integrations[wp_core_video]" value="false"/>
|
698 |
+
<input type="checkbox" name="integrations[wp_core_video]" id="integrations[wp_core_video]" value="true" />
|
699 |
+
...and also the YouTube links </p>
|
700 |
+
</td>
|
701 |
+
</tr>
|
702 |
+
<tr>
|
703 |
+
<td class="first"><label for="js-everywhere">Load FV Flowplayer JS everywhere:</label></td>
|
704 |
+
<td>
|
705 |
+
<p class="description">
|
706 |
+
<input type="hidden" name="js-everywhere" value="false"/>
|
707 |
+
<input type="checkbox" name="js-everywhere" id="js-everywhere" value="true" />
|
708 |
+
If you use some special JavaScript integration you might prefer this option. <span class="more">Otherwise our JavaScript only loads if the shortcode is found in any of the posts being currently displayed.</span> <a href="#" class="show-more">(…)</a>
|
709 |
+
</p>
|
710 |
+
</td>
|
711 |
+
</tr>
|
712 |
+
<tr>
|
713 |
+
<td class="first"><label for="parse_comments">Parse Vimeo and YouTube links:</label></td>
|
714 |
+
<td>
|
715 |
+
<p class="description">
|
716 |
+
<input type="hidden" name="parse_comments" value="false"/>
|
717 |
+
<input type="checkbox" name="parse_comments" id="parse_comments" value="true" />
|
718 |
+
Affects comments, bbPress and BuddyPress. These links will be displayed as videos. <span class="more">This option makes most sense together with FV Player Pro as it embeds these videos using FV Player. Enables use of shortcodes in comments and bbPress.</span> <a href="#" class="show-more">(…)</a>
|
719 |
+
</p>
|
720 |
+
</td>
|
721 |
+
</tr>
|
722 |
+
<tr>
|
723 |
+
<td class="first"><label for="postthumbnail">Post Thumbnail:</label></td>
|
724 |
+
<td>
|
725 |
+
<p class="description">
|
726 |
+
<input type="hidden" name="postthumbnail" value="false"/>
|
727 |
+
<input type="checkbox" name="postthumbnail" id="postthumbnail" value="true" />
|
728 |
+
Setting a video splash screen from the media library will automatically make it the splash image if there is none. </p>
|
729 |
+
</td>
|
730 |
+
</tr>
|
731 |
+
<tr>
|
732 |
+
<td class="first"><label for="rtmp-live-buffer">RTMP bufferTime tweak:</label></td>
|
733 |
+
<td>
|
734 |
+
<p class="description">
|
735 |
+
<input type="hidden" name="rtmp-live-buffer" value="false"/>
|
736 |
+
<input type="checkbox" name="rtmp-live-buffer" id="rtmp-live-buffer" value="true" />
|
737 |
+
Use if your live streams are not smooth. <span class="more">Adobe <a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#bufferTime">recommends</a> to set bufferTime to 0 for live streams, but if your stream is not smooth, you can use this setting.</span> <a href="#" class="show-more">(…)</a>
|
738 |
+
</p>
|
739 |
+
</td>
|
740 |
+
</tr>
|
741 |
+
|
742 |
+
<tr>
|
743 |
+
<td class="first"><label for="db_duration">Scan video length:</label></td>
|
744 |
+
<td>
|
745 |
+
<p class="description">
|
746 |
+
<input type="hidden" name="db_duration" value="false" />
|
747 |
+
<input type="checkbox" name="db_duration" id="db_duration" value="true" />
|
748 |
+
Turn off if you experience issues when saving posts! <span class="more">Turn on to enable video duration scanning. Currently posts in queue. </span> <a href="#" class="show-more">(…)</a>
|
749 |
+
</p>
|
750 |
+
</td>
|
751 |
+
</tr>
|
752 |
+
<!--<tr>
|
753 |
+
<td style="width: 350px"><label for="optimizepress2">Handle OptimizePress 2 videos (<abbr title="Following attributes are not currently supported: margin, border">?</abbr>):</label></td>
|
754 |
+
<td>
|
755 |
+
<input type="hidden" name="integrations[optimizepress2]" value="false" />
|
756 |
+
<input type="checkbox" name="integrations[optimizepress2]" id="optimizepress2" value="true" />
|
757 |
+
</td>
|
758 |
+
</tr>-->
|
759 |
+
|
760 |
+
<tr>
|
761 |
+
<td class="first"><label for="integrations[embed_iframe]">Use iframe embedding:</label></td>
|
762 |
+
<td>
|
763 |
+
<p class="description">
|
764 |
+
<input type="hidden" name="integrations[embed_iframe]" value="false"/>
|
765 |
+
<input type="checkbox" name="integrations[embed_iframe]" id="integrations[embed_iframe]" value="true" />
|
766 |
+
Beta version! New kind of embedding which supports all the features in embedded player. </p>
|
767 |
+
</td>
|
768 |
+
</tr>
|
769 |
+
<tr>
|
770 |
+
<td class="first"><label for="integrations[featured_img]">Add featured image automatically:</label></td>
|
771 |
+
<td>
|
772 |
+
<p class="description">
|
773 |
+
<input type="hidden" name="integrations[featured_img]" value="false"/>
|
774 |
+
<input type="checkbox" name="integrations[featured_img]" id="integrations[featured_img]" value="true" />
|
775 |
+
If the featured image is not set, splash image of the first player will be used. </p>
|
776 |
+
</td>
|
777 |
+
</tr>
|
778 |
+
|
779 |
+
<tr>
|
780 |
+
<td><label for="facebook_sharing">Facebook Video Sharing:</label></td>
|
781 |
+
<td>
|
782 |
+
<p class="description">
|
783 |
+
<input type="hidden" name="integrations[facebook_sharing]" value="false" />
|
784 |
+
<input type="checkbox" name="integrations[facebook_sharing]" id="facebook_sharing" value="true" />
|
785 |
+
When sharing your post to Facebook the first MP4 video will be shared directly rather than the post excerpt. <span class="more"><strong>Requirements</strong>: video has to be on https:// and splash screen has to be present. Videos with download protection are automatically excluded.</span> <a href="#" class="show-more">(…)</a>
|
786 |
+
</p>
|
787 |
+
</td>
|
788 |
+
</tr>
|
789 |
+
<tr>
|
790 |
+
<td colspan="4">
|
791 |
+
<input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
|
792 |
+
</td>
|
793 |
+
</tr>
|
794 |
+
</table>
|
795 |
+
</div>
|
796 |
+
</div>
|
797 |
+
<div id="fv_flowplayer_mobile" class="postbox " >
|
798 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Mobile Settings</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Mobile Settings</span></h2>
|
799 |
+
<div class="inside">
|
800 |
+
|
801 |
+
<table class="form-table2">
|
802 |
+
<tr>
|
803 |
+
<td class="first"><label for="mobile_native_fullscreen">Use native fullscreen on mobile:</label></td>
|
804 |
+
<td>
|
805 |
+
<p class="description">
|
806 |
+
<input type="hidden" name="mobile_native_fullscreen" value="false"/>
|
807 |
+
<input type="checkbox" name="mobile_native_fullscreen" id="mobile_native_fullscreen" value="true" />
|
808 |
+
Stops popups, ads or subtitles from working, but provides faster interface. We set this for Android < 4.4 and iOS < 7 automatically. </p>
|
809 |
+
</td>
|
810 |
+
</tr>
|
811 |
+
<tr>
|
812 |
+
<td class="first"><label for="mobile_force_fullscreen">Force fullscreen on mobile (beta):</label></td>
|
813 |
+
<td>
|
814 |
+
<p class="description">
|
815 |
+
<input type="hidden" name="mobile_force_fullscreen" value="false"/>
|
816 |
+
<input type="checkbox" name="mobile_force_fullscreen" id="mobile_force_fullscreen" value="true" />
|
817 |
+
Video playback will start in fullscreen. iPhone with iOS < 10 always forces fullscreen for video playback. </p>
|
818 |
+
</td>
|
819 |
+
</tr>
|
820 |
+
<tr>
|
821 |
+
<td colspan="4">
|
822 |
+
<input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
|
823 |
+
</td>
|
824 |
+
</tr>
|
825 |
+
</table>
|
826 |
+
</div>
|
827 |
+
</div>
|
828 |
+
<div id="fv_flowplayer_seo" class="postbox " >
|
829 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Video SEO</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Video SEO</span></h2>
|
830 |
+
<div class="inside">
|
831 |
+
<table class="form-table2">
|
832 |
+
<tr>
|
833 |
+
<td class="first"><label for="integrations[schema_org]">Use Schema.org markup:</label></td>
|
834 |
+
<td>
|
835 |
+
<p class="description">
|
836 |
+
<input type="hidden" name="integrations[schema_org]" value="false"/>
|
837 |
+
<input type="checkbox" name="integrations[schema_org]" id="integrations[schema_org]" value="true" />
|
838 |
+
Adds the video meta data information for search engines. </p>
|
839 |
+
</td>
|
840 |
+
</tr>
|
841 |
+
<tr>
|
842 |
+
<td class="first"><label for="video_sitemap">Use XML Video Sitemap:</label></td>
|
843 |
+
<td>
|
844 |
+
<p class="description">
|
845 |
+
<input type="hidden" name="video_sitemap" value="false"/>
|
846 |
+
<input type="checkbox" name="video_sitemap" id="video_sitemap" value="true" />
|
847 |
+
Creates <code>http://example.org/video-sitemap.xml</code> which you can submit via Google Webmaster Tools. <span class="more">As feeds tend to be cached by web browser make sure you clear your browser cache if you are doing some testing.</span> <a href="#" class="show-more">(…)</a>
|
848 |
+
</p>
|
849 |
+
</td>
|
850 |
+
</tr>
|
851 |
+
<tr>
|
852 |
+
<td><label for="video_sitemap_meta">Sitemap Post Meta <a href="#" class="show-more">(?)</a>:</label></td>
|
853 |
+
<td>
|
854 |
+
<input id="video_sitemap_meta" name="video_sitemap_meta" type="text" value="" />
|
855 |
+
<p class="description"><span class="more">You can enter post meta keys here, use <code>,</code> to separate multiple values.</span></p>
|
856 |
+
</td>
|
857 |
+
</tr>
|
858 |
+
<tr>
|
859 |
+
<td colspan="4">
|
860 |
+
<input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
|
861 |
+
</td>
|
862 |
+
</tr>
|
863 |
+
</table>
|
864 |
+
</div>
|
865 |
+
</div>
|
866 |
+
<div id="fv_flowplayer_conversion" class="postbox " >
|
867 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Conversion</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Conversion</span></h2>
|
868 |
+
<div class="inside">
|
869 |
+
<p>This section allows you to convert videos posted using other plugins to FV Player shortcodes.</p>
|
870 |
+
<table class="form-table2" style="margin: 5px; ">
|
871 |
+
<tr>
|
872 |
+
<td>
|
873 |
+
<input type="button" class="button" value="Convert JW Player shortcodes" style="margin-top: 2ex;" onclick="if( confirm('This converts the [jwplayer] shortcodes into [fvplayer] shortcodes.\n\n Please make sure you backup your database before continuing. You can use revisions to get back to previos versions of your posts as well.') ) location.href='http://example.org/wp-admin/options-general.php?page=fvplayer&convert_jwplayer=f13b4f40a5'; "/>
|
874 |
+
</td>
|
875 |
+
</tr>
|
876 |
+
</table>
|
877 |
+
</div>
|
878 |
+
</div>
|
879 |
+
<div id="fv_player_pro" class="postbox " >
|
880 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Pro Features</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Pro Features</span></h2>
|
881 |
+
<div class="inside">
|
882 |
+
<p><a href="http://foliovision.com/wordpress/plugins/fv-wordpress-flowplayer/download">Purchase FV Flowplayer license</a> to enable Pro features!</p>
|
883 |
+
<table class="form-table2">
|
884 |
+
<tr>
|
885 |
+
<td class="first"><label>Advanced Vimeo embeding:</label></td>
|
886 |
+
<td>
|
887 |
+
<p class="description">
|
888 |
+
<input type="checkbox" checked="checked" disabled="true" />
|
889 |
+
Use Vimeo as your video host and use all of FV Flowplayer features. </p>
|
890 |
+
</td>
|
891 |
+
</tr>
|
892 |
+
<tr>
|
893 |
+
<td><label>Advanced YouTube embeding:</label></td>
|
894 |
+
<td>
|
895 |
+
<p class="description">
|
896 |
+
<input type="checkbox" checked="checked" disabled="true" />
|
897 |
+
Use YouTube as your video host and use all of FV Flowplayer features. </p>
|
898 |
+
</td>
|
899 |
+
</tr>
|
900 |
+
<tr>
|
901 |
+
<td><label>Enable user defined AB loop:</label></td>
|
902 |
+
<td>
|
903 |
+
<p class="description">
|
904 |
+
<input type="checkbox" checked="checked" disabled="true" />
|
905 |
+
Let your users repeat the parts of the video which they like! </p>
|
906 |
+
</td>
|
907 |
+
</tr>
|
908 |
+
<tr>
|
909 |
+
<td><label>Enable video lightbox:</label></td>
|
910 |
+
<td>
|
911 |
+
<p class="description">
|
912 |
+
<input type="checkbox" checked="checked" disabled="true" />
|
913 |
+
Enables Lightbox video gallery to show videos in a lightbox popup! </p>
|
914 |
+
</td>
|
915 |
+
</tr>
|
916 |
+
<tr>
|
917 |
+
<td><label>Enable quality switching:</label></td>
|
918 |
+
<td>
|
919 |
+
<p class="description">
|
920 |
+
<input type="checkbox" checked="checked" disabled="true" />
|
921 |
+
Upload your videos in multiple quality for best user experience with YouTube-like quality switching! </p>
|
922 |
+
</td>
|
923 |
+
</tr>
|
924 |
+
<tr>
|
925 |
+
<td><label>Amazon CloudFront protected content:</label></td>
|
926 |
+
<td>
|
927 |
+
<p class="description">
|
928 |
+
<input type="checkbox" checked="checked" disabled="true" />
|
929 |
+
Protect your Amazon CDN hosted videos.
|
930 |
+
</p>
|
931 |
+
</td>
|
932 |
+
</tr>
|
933 |
+
<tr>
|
934 |
+
<td><label>Autoplay just once:</label></td>
|
935 |
+
<td>
|
936 |
+
<p class="description">
|
937 |
+
<input type="checkbox" disabled="true" />
|
938 |
+
Makes sure each video autoplays only once for each visitor. </p>
|
939 |
+
</td>
|
940 |
+
</tr>
|
941 |
+
<tr>
|
942 |
+
<td><label>Enable video ads:</label></td>
|
943 |
+
<td>
|
944 |
+
<p class="description">
|
945 |
+
<input type="checkbox" disabled="true" />
|
946 |
+
Define your own videos ads to play in together with your videos - postroll or prerool </p>
|
947 |
+
</td>
|
948 |
+
</tr>
|
949 |
+
</table>
|
950 |
+
<p><strong>Upcoming pro features</strong>:</p>
|
951 |
+
<table class="form-table2">
|
952 |
+
<tr>
|
953 |
+
<td class="first"><label>Enable PayWall:</label></td>
|
954 |
+
<td>
|
955 |
+
<p class="description">
|
956 |
+
<input type="checkbox" checked="checked" disabled="true" />
|
957 |
+
Monetize the video content on your membership site. </p>
|
958 |
+
</td>
|
959 |
+
</tr>
|
960 |
+
</table>
|
961 |
+
</div>
|
962 |
+
</div>
|
963 |
+
</div><input type="hidden" id="closedpostboxesnonce" name="closedpostboxesnonce" value="d28516cc79" /><input type="hidden" id="meta-box-order-nonce" name="meta-box-order-nonce" value="3edef551d9" />
|
964 |
+
</div>
|
965 |
+
<div id='postbox-container-tab_skin' class='postbox-container' style="">
|
966 |
+
<div id="normal-sortables" class="meta-box-sortables"><div id="fv_flowplayer_description" class="postbox " >
|
967 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: </span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span> </span></h2>
|
968 |
+
<div class="inside">
|
969 |
+
<table class="form-table">
|
970 |
+
<tr>
|
971 |
+
<td colspan="4">
|
972 |
+
<p>
|
973 |
+
You can customize the colors of the player to match your website. </p>
|
974 |
+
</td>
|
975 |
+
</tr>
|
976 |
+
</table>
|
977 |
+
</div>
|
978 |
+
</div>
|
979 |
+
<div id="flowplayer-wrapper" class="postbox " >
|
980 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Player Skin</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Player Skin</span></h2>
|
981 |
+
<div class="inside">
|
982 |
+
<style id="fv-style-preview"></style>
|
983 |
+
<div class="flowplayer-wrapper">
|
984 |
+
<div id="wpfp_1b7da827d9fee9aa6d5bb9c5dca973bf" class="flowplayer no-brand is-splash fvp-play-button" style="max-width: 100%; background-image: url(https://i.vimeocdn.com/video/609485450_1280.jpg);" data-ratio="0.5625">
|
985 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
986 |
+
<div class='fvp-share-bar'><ul class="fvp-sharing">
|
987 |
+
<li><a class="sharing-facebook" href="https://www.facebook.com/sharer/sharer.php?u=" target="_blank">Facebook</a></li>
|
988 |
+
<li><a class="sharing-twitter" href="https://twitter.com/home?status=Test+Blog+" target="_blank">Twitter</a></li>
|
989 |
+
<li><a class="sharing-google" href="https://plus.google.com/share?url=" target="_blank">Google+</a></li>
|
990 |
+
<li><a class="sharing-email" href="mailto:?body=Check%20out%20the%20amazing%20video%20here%3A%20" target="_blank">Email</a></li></ul><div><label><a class="embed-code-toggle" href="#"><strong>Embed</strong></a></label></div><div class="embed-code"><label>Copy and paste this HTML code into your webpage to embed.</label><textarea></textarea></div></div>
|
991 |
+
</div>
|
992 |
+
Hint: play the video to see live preview of the color settings </div>
|
993 |
+
<table class="form-table2 flowplayer-settings fv-player-interface-form-group">
|
994 |
+
<tr>
|
995 |
+
<td><label for="hasBorder">Border</label></td>
|
996 |
+
<td><input type="hidden" name="hasBorder" value="false" />
|
997 |
+
<input type="checkbox" name="hasBorder" id="hasBorder" value="true"
|
998 |
+
data-fv-preview=".flowplayer{border:%val%px solid!important;}"/>
|
999 |
+
</td>
|
1000 |
+
|
1001 |
+
</tr>
|
1002 |
+
<tr>
|
1003 |
+
<td><label for="borderColor">Border color</label></td>
|
1004 |
+
<td><input class="color" id="borderColor" name="borderColor" type="text" value="#666666"
|
1005 |
+
data-fv-preview=".flowplayer{border-color:#%val%!important;}"/></td>
|
1006 |
+
</tr>
|
1007 |
+
<tr>
|
1008 |
+
<td><label for="marginBottom">Bottom Margin</label></td>
|
1009 |
+
<td><input id="marginBottom" name="marginBottom" title="Enter value in pixels" type="text" value="28"
|
1010 |
+
data-fv-preview=".flowplayer { margin: 0 auto %val%px auto!important; display: block!important; }
|
1011 |
+
.flowplayer.fixed-controls { margin: 0 auto calc(%val%px + 30px) auto!important; display: block!important; }
|
1012 |
+
.flowplayer.has-abloop { margin-bottom: %val%px!important; }
|
1013 |
+
.flowplayer.fixed-controls.has-abloop { margin-bottom: calc(%val%px + 30px)!important; }"/></td>
|
1014 |
+
</tr>
|
1015 |
+
<tr>
|
1016 |
+
<td><label for="bufferColor">Buffer</label></td>
|
1017 |
+
<td><input class="color" id="bufferColor" name="bufferColor" type="text" value="#eeeeee"
|
1018 |
+
data-fv-preview=".flowplayer .fp-volumeslider, .flowplayer .noUi-background { background-color: #%val% !important; }
|
1019 |
+
.flowplayer .fp-buffer, .flowplayer .fv-ab-loop .noUi-handle { background-color: #%val% !important; }" /></td>
|
1020 |
+
</tr>
|
1021 |
+
<tr>
|
1022 |
+
<td><label for="canvas">Canvas</label></td>
|
1023 |
+
<td><input class="color" id="canvas" name="canvas" type="text" value="#000000"
|
1024 |
+
data-fv-preview=".flowplayer { background-color: #%val%!important; }"/></td>
|
1025 |
+
</tr>
|
1026 |
+
<tr>
|
1027 |
+
<td><label for="backgroundColor">Controlbar</label></td>
|
1028 |
+
<td><input class="color" id="backgroundColor" name="backgroundColor" type="text" value="#333333"
|
1029 |
+
data-fv-preview=".flowplayer .fv-ab-loop .noUi-handle { color:#%val%!important; }
|
1030 |
+
.fv_player_popup { background: #%val%!important;}
|
1031 |
+
.fvfp_admin_error_content { background: #%val%!important; }
|
1032 |
+
.flowplayer .fp-controls, .flowplayer .fv-ab-loop, .fv-player-buttons a:active, .fv-player-buttons a { background-color: #%val% !important; }"/></td>
|
1033 |
+
</tr>
|
1034 |
+
<tr>
|
1035 |
+
<td><label for="font-face">Font Face</label></td>
|
1036 |
+
<td>
|
1037 |
+
<select id="font-face" name="font-face" data-fv-preview="#content .flowplayer, .flowplayer { font-family: %val%; }">
|
1038 |
+
<option value="inherit">(inherit from template)</option>
|
1039 |
+
<option value=""Courier New", Courier, monospace">Courier New</option>
|
1040 |
+
<option value="Tahoma, Geneva, sans-serif" selected="selected">Tahoma, Geneva</option>
|
1041 |
+
</select>
|
1042 |
+
</td>
|
1043 |
+
</tr>
|
1044 |
+
<tr>
|
1045 |
+
<td class="second-column"><label for="player-position">Player position</label></td>
|
1046 |
+
<td>
|
1047 |
+
<select id="player-position" name="player-position" data-fv-preview=".flowplayer { margin-left: 0; }">
|
1048 |
+
<option value="" selected="selected">Centered</option>
|
1049 |
+
<option value="left">Left (no text-wrap)</option>
|
1050 |
+
</select>
|
1051 |
+
</td>
|
1052 |
+
</tr>
|
1053 |
+
<tr>
|
1054 |
+
<td><label for="progressColor">Progress</label></td>
|
1055 |
+
<td><input class="color" id="progressColor" name="progressColor" type="text" value="#bb0000"
|
1056 |
+
data-fv-preview=".flowplayer .fp-volumelevel { background-color: #%val%!important; }
|
1057 |
+
.flowplayer .fp-progress, .flowplayer .fv-ab-loop .noUi-connect, .fv-player-buttons a.current { background-color: #%val% !important; }
|
1058 |
+
.flowplayer .fp-dropdown li.active { background-color: #%val% !important }"/></td>
|
1059 |
+
</tr>
|
1060 |
+
<tr>
|
1061 |
+
<td><label for="timeColor">Time</label></td>
|
1062 |
+
<td><input class="color" id="timeColor" name="timeColor" type="text" value="#eeeeee"
|
1063 |
+
data-fv-preview=".flowplayer .fp-elapsed { color: #%val% !important; }
|
1064 |
+
.fv-wp-flowplayer-notice-small { color: #%val% !important; }"/></td>
|
1065 |
+
</tr>
|
1066 |
+
<tr>
|
1067 |
+
<td><label for="durationColor">Total time</label></td>
|
1068 |
+
<td><input class="color" id="durationColor" name="durationColor" type="text" value="#eeeeee"
|
1069 |
+
data-fv-preview=".flowplayer .fp-controls, .flowplayer .fv-ab-loop, .fv-player-buttons a:active, .fv-player-buttons a { color:#%val% !important; }"/></td>
|
1070 |
+
</tr>
|
1071 |
+
<tr>
|
1072 |
+
<td colspan="2">
|
1073 |
+
<input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
|
1074 |
+
</td>
|
1075 |
+
</tr>
|
1076 |
+
</table>
|
1077 |
+
<div style="clear: both"></div>
|
1078 |
+
</div>
|
1079 |
+
</div>
|
1080 |
+
<div id="fv_flowplayer_skin_playlist" class="postbox " >
|
1081 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Playlist</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Playlist</span></h2>
|
1082 |
+
<div class="inside">
|
1083 |
+
<div class="flowplayer-wrapper">
|
1084 |
+
<div class="fp-playlist-external fv-playlist-design-2017 fp-playlist-horizontal fp-playlist-has-captions" rel="wpfp_1b7da827d9fee9aa6d5bb9c5dca973bf">
|
1085 |
+
<a href='#' onclick='return false' data-item='{"sources":[{"src":"https:\/\/player.vimeo.com\/external\/196881410.hd.mp4?s=24645ecff21ff60079fc5b7715a97c00f90c6a18&profile_id=174&oauth2_token_id=3501005","type":"video\/mp4"}],"subtitles":[{"srclang":"en","label":"English","src":"http:\/\/example.org\/wp-content\/plugins\/fv-wordpress-flowplayer\/images\/test-subtitles.vtt"}]}'><div style='background-image: url("https://i.vimeocdn.com/video/608654918_295x166.jpg")'></div><h4><span>Foliovision Video</span></h4></a>
|
1086 |
+
<a href='#' onclick='return false' data-item='{"sources":[{"src":"https:\/\/player.vimeo.com\/external\/224781088.sd.mp4?s=face4dbb990b462826c8e1e43a9c66c6a9bb5585&profile_id=165&oauth2_token_id=3501005","type":"video\/mp4"}]}'><div style='background-image: url("https://i.vimeocdn.com/video/643908843_295x166.jpg")'></div><h4><span>Lapinthrope Extras - Roy Thompson Hall Dance</span></h4></a>
|
1087 |
+
<a href='#' onclick='return false' data-item='{"sources":[{"src":"https:\/\/player.vimeo.com\/external\/45864857.hd.mp4?s=94fddee594da3258c9e10355f5bad8173c4aee7b&profile_id=113&oauth2_token_id=3501005","type":"video\/mp4"}]}'><div style='background-image: url("https://i.vimeocdn.com/video/319116053_295x166.jpg")'></div><h4><span>Romeo and Juliet Ballet Schloss Kittsee</span></h4></a>
|
1088 |
+
</div>
|
1089 |
+
Hint: you can click the thumbnails to switch videos in the above player. This preview uses the horizontal playlist style.
|
1090 |
+
</div>
|
1091 |
+
<table class="form-table2 flowplayer-settings fv-player-interface-form-group">
|
1092 |
+
<tr>
|
1093 |
+
<td><label for="playlist-design">Playlist Design</label></td>
|
1094 |
+
<td>
|
1095 |
+
<select id="playlist-design" name="playlist-design" data-fv-preview="">
|
1096 |
+
<option value="2017" selected="selected">2017</option>
|
1097 |
+
<option value="2017 visible-captions">2017 with captions</option>
|
1098 |
+
<option value="2014">2014</option>
|
1099 |
+
</select>
|
1100 |
+
</td>
|
1101 |
+
</tr>
|
1102 |
+
<tr>
|
1103 |
+
<td><label for="playlistBgColor">Background Color</label></td>
|
1104 |
+
<td><input class="color" id="playlistBgColor" name="playlistBgColor" type="text" value="#808080"
|
1105 |
+
data-fv-preview=".fp-playlist-external > a > span { background-color:#%val%; }"/></td>
|
1106 |
+
</tr>
|
1107 |
+
<tr>
|
1108 |
+
<td><label for="playlistSelectedColor">Active Item</label></td>
|
1109 |
+
<td><input class="color" id="playlistSelectedColor" name="playlistSelectedColor" type="text" value="#bb0000"
|
1110 |
+
data-fv-preview=".fp-playlist-external.fv-playlist-design-2014 a.is-active,.fp-playlist-external.fv-playlist-design-2014 a.is-active h4,.fp-playlist-external.fp-playlist-only-captions a.is-active,.fp-playlist-external.fp-playlist-only-captions a.is-active h4 { color:#%val%; }"/></td>
|
1111 |
+
</tr>
|
1112 |
+
<tr>
|
1113 |
+
<td><label for="playlistFontColor-proxy">Font Color</label></td>
|
1114 |
+
<td>
|
1115 |
+
<input class="color" id="playlistFontColor-proxy" data-previous="" style="display:none;" type="text" value="" />
|
1116 |
+
<input id="playlistFontColor" name="playlistFontColor" type="hidden" value=""
|
1117 |
+
data-fv-preview=".fp-playlist-external > a { color:#%val%; } #dashboard-widgets .flowplayer-wrapper .fp-playlist-external h4{color: #%val% !important;}"/>
|
1118 |
+
<a class="playlistFontColor-show" >Use custom color</a>
|
1119 |
+
<a class="playlistFontColor-hide" style="display:none;">Inherit from theme</a>
|
1120 |
+
</td>
|
1121 |
+
</tr>
|
1122 |
+
<tr>
|
1123 |
+
<td colspan="2">
|
1124 |
+
<input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
|
1125 |
+
</td>
|
1126 |
+
</tr>
|
1127 |
+
</table>
|
1128 |
+
<div style="clear: both"></div>
|
1129 |
+
</div>
|
1130 |
+
</div>
|
1131 |
+
<div id="fv_flowplayer_skin_subtitles" class="postbox " >
|
1132 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Subtitles</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Subtitles</span></h2>
|
1133 |
+
<div class="inside">
|
1134 |
+
<table class="form-table2 flowplayer-settings fv-player-interface-form-group">
|
1135 |
+
<tr>
|
1136 |
+
<td><label for="subtitle-font-face">Font Face</label></td>
|
1137 |
+
<td>
|
1138 |
+
<select id="subtitle-font-face" name="subtitleFontFace" data-fv-preview=".flowplayer .fp-subtitle .fp-subtitle-line { font-family: %val%!important; }">
|
1139 |
+
<option value="inherit">(inherit)</option>
|
1140 |
+
<option value=""Courier New", Courier, monospace">Courier New</option>
|
1141 |
+
<option value="Tahoma, Geneva, sans-serif">Tahoma, Geneva</option>
|
1142 |
+
</select>
|
1143 |
+
</td>
|
1144 |
+
</tr>
|
1145 |
+
<tr>
|
1146 |
+
<td><label for="subtitleSize">Font Size</label></td>
|
1147 |
+
<td><input id="subtitleSize" name="subtitleSize" title="Enter value in pixels" type="text" value="16"
|
1148 |
+
data-fv-preview=".flowplayer .fp-subtitle .fp-subtitle-line { font-size: %val%px!important; }"/></td>
|
1149 |
+
</tr>
|
1150 |
+
<tr>
|
1151 |
+
<td><label for="subtitleBgColor">Background Color</label></td>
|
1152 |
+
<td><input class="color" id="subtitleBgColor" name="subtitleBgColor" type="text" value="#000000"
|
1153 |
+
data-fv-preview=".flowplayer .fp-subtitle .fp-subtitle-line { background-color: rgba(%val%)!important; }"/></td>
|
1154 |
+
</tr>
|
1155 |
+
<tr>
|
1156 |
+
<td><label for="subtitleBgAlpha">Background Opacity</label></td>
|
1157 |
+
<td><input id="subtitleBgAlpha" name="subtitleBgAlpha" type="range" min="0" max="1" step="0.01" value="0.5"
|
1158 |
+
data-fv-preview=""/></td>
|
1159 |
+
</tr>
|
1160 |
+
<tr>
|
1161 |
+
<td colspan="2">
|
1162 |
+
<input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
|
1163 |
+
</td>
|
1164 |
+
</tr>
|
1165 |
+
</table>
|
1166 |
+
<div id="fp-preview-wrapper">
|
1167 |
+
<div class="flowplayer"id="preview">
|
1168 |
+
<div class="fp-subtitle fp-active">
|
1169 |
+
<span class="fp-subtitle-line">
|
1170 |
+
The quick brown fox jumps over the lazy dog. </span>
|
1171 |
+
</div>
|
1172 |
+
</div>
|
1173 |
+
</div>
|
1174 |
+
<div style="clear: both"></div>
|
1175 |
+
</div>
|
1176 |
+
</div>
|
1177 |
+
<div id="fv_flowplayer_skin_sticky" class="postbox " >
|
1178 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Sticky Video</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Sticky Video</span></h2>
|
1179 |
+
<div class="inside">
|
1180 |
+
<p>This feature lets your viewers continue watching the video as they scroll past it. It applies to desktop computer displays - minimal width of 1020 pixels.</p>
|
1181 |
+
<table class="form-table2 flowplayer-settings fv-player-interface-form-group">
|
1182 |
+
<tr>
|
1183 |
+
<td class="first"><label for="sticky_video">Enable:</label></td>
|
1184 |
+
<td>
|
1185 |
+
<p class="description">
|
1186 |
+
<input type="hidden" name="sticky_video" value="false"/>
|
1187 |
+
<input type="checkbox" name="sticky_video" id="sticky_video" value="true" />
|
1188 |
+
</p>
|
1189 |
+
</td>
|
1190 |
+
</tr>
|
1191 |
+
<tr>
|
1192 |
+
<td><label for="sticky_place">Placement</label></td>
|
1193 |
+
<td>
|
1194 |
+
<select id="sticky_place" name="sticky_place">
|
1195 |
+
<option value="right-bottom" selected="selected">Right, Bottom</option>
|
1196 |
+
<option value="left-bottom">Left, Bottom</option>
|
1197 |
+
<option value="left-top">Left, Top</option>
|
1198 |
+
<option value="right-top">Right, Top</option>
|
1199 |
+
</select>
|
1200 |
+
</td>
|
1201 |
+
</tr>
|
1202 |
+
<tr>
|
1203 |
+
<td><label for="sticky_width">Player width [px]</label></td>
|
1204 |
+
<td><input id="sticky_width" name="sticky_width" title="Enter value in pixels" type="text" value="380"/></td>
|
1205 |
+
</tr>
|
1206 |
+
|
1207 |
+
|
1208 |
+
<tr>
|
1209 |
+
<td colspan="2">
|
1210 |
+
<input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
|
1211 |
+
</td>
|
1212 |
+
</tr>
|
1213 |
+
</table>
|
1214 |
+
<div style="clear: both"></div>
|
1215 |
+
</div>
|
1216 |
+
</div>
|
1217 |
+
</div><input type="hidden" id="closedpostboxesnonce" name="closedpostboxesnonce" value="d28516cc79" /><input type="hidden" id="meta-box-order-nonce" name="meta-box-order-nonce" value="3edef551d9" />
|
1218 |
+
</div>
|
1219 |
+
<div id='postbox-container-tab_hosting' class='postbox-container' style="">
|
1220 |
+
<div id="normal-sortables" class="meta-box-sortables"><div id="fv_flowplayer_description" class="postbox " >
|
1221 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: </span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span> </span></h2>
|
1222 |
+
<div class="inside">
|
1223 |
+
<table class="form-table">
|
1224 |
+
<tr>
|
1225 |
+
<td colspan="4">
|
1226 |
+
<p>
|
1227 |
+
Here you can enable and configure advanced hosting options. </p>
|
1228 |
+
</td>
|
1229 |
+
</tr>
|
1230 |
+
</table>
|
1231 |
+
</div>
|
1232 |
+
</div>
|
1233 |
+
<div id="fv_flowplayer_amazon_options" class="postbox " >
|
1234 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Amazon S3 Protected Content</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Amazon S3 Protected Content</span></h2>
|
1235 |
+
<div class="inside">
|
1236 |
+
<table class="form-table2">
|
1237 |
+
<tr>
|
1238 |
+
<td colspan="2">
|
1239 |
+
<p>Secured Amazon S3 URLs are recommended for member-only sections of the site. We check the video length and make sure the link expiration time is big enough for the video to buffer properly.</p>
|
1240 |
+
<p>If you use a cache plugin (such as Hyper Cache, WP Super Cache or W3 Total Cache), we recommend that you set the "Default Expiration Time" to twice as much as your cache timeout and check "Force the default expiration time". That way the video length won't be accounted and the video source URLs in your cached pages won't expire. Read more in the <a href="http://foliovision.com/wordpress/plugins/fv-wordpress-flowplayer/secure-amazon-s3-guide#wp-cache" target="_blank">Using Amazon S3 secure content in FV Flowplayer guide</a>.</p>
|
1241 |
+
</td>
|
1242 |
+
</tr>
|
1243 |
+
<tr>
|
1244 |
+
<td class="first"><label for="amazon_expire">Default Expiration Time [minutes] (<abbr title="Each video duration is stored on post save and then used as the expire time. If the duration is not available, this value is used.">?</abbr>):</label></td>
|
1245 |
+
<td>
|
1246 |
+
<input type="text" size="40" name="amazon_expire" id="amazon_expire" value="5" />
|
1247 |
+
</td>
|
1248 |
+
</tr>
|
1249 |
+
|
1250 |
+
<tr>
|
1251 |
+
<td class="first"><label for="amazon_expire_force">Force the default expiration time:</label></td>
|
1252 |
+
<td>
|
1253 |
+
<p class="description">
|
1254 |
+
<input type="hidden" name="amazon_expire_force" value="false"/>
|
1255 |
+
<input type="checkbox" name="amazon_expire_force" id="amazon_expire_force" value="true" />
|
1256 |
+
</p>
|
1257 |
+
</td>
|
1258 |
+
</tr>
|
1259 |
+
|
1260 |
+
|
1261 |
+
<tr class="amazon-s3-first">
|
1262 |
+
<td><label for="amazon_bucket[]">Amazon Bucket (<abbr title="We recommend that you simply put all of your protected video into a single bucket and enter its name here. All matching videos will use the protected URLs.">?</abbr>):</label></td>
|
1263 |
+
<td><input id="amazon_bucket[]" name="amazon_bucket[]" type="text" value="" /></td>
|
1264 |
+
</tr>
|
1265 |
+
<tr class="amazon-s3-first">
|
1266 |
+
<td><label for="amazon_region[]">Region</td>
|
1267 |
+
<td>
|
1268 |
+
<select id="amazon_region[]" name="amazon_region[]">
|
1269 |
+
<option value="">Select the region</option>
|
1270 |
+
<option value="us-east-1">US East (N. Virginia)</option>
|
1271 |
+
<option value="us-east-2">US East (Ohio)</option>
|
1272 |
+
<option value="us-west-1">US West (N. California)</option>
|
1273 |
+
<option value="us-west-2">US West (Oregon)</option>
|
1274 |
+
<option value="ca-central-1">Canada (Central)</option>
|
1275 |
+
<option value="ap-south-1">Asia Pacific (Mumbai)</option>
|
1276 |
+
<option value="ap-northeast-2">Asia Pacific (Seoul)</option>
|
1277 |
+
<option value="ap-southeast-1">Asia Pacific (Singapore)</option>
|
1278 |
+
<option value="ap-southeast-2">Asia Pacific (Sydney)</option>
|
1279 |
+
<option value="ap-northeast-1">Asia Pacific (Tokyo)</option>
|
1280 |
+
<option value="eu-central-1">EU (Frankfurt)</option>
|
1281 |
+
<option value="eu-west-1">EU (Ireland)</option>
|
1282 |
+
<option value="eu-west-2">EU (London)</option>
|
1283 |
+
<option value="sa-east-1">South America (São Paulo)</option>
|
1284 |
+
</select>
|
1285 |
+
</td>
|
1286 |
+
</tr>
|
1287 |
+
<tr class="amazon-s3-first">
|
1288 |
+
<td><label for="amazon_key[]">Access Key ID:</label></td>
|
1289 |
+
<td><input id="amazon_key[]" name="amazon_key[]" type="text" value="" /></td>
|
1290 |
+
</tr>
|
1291 |
+
<tr class="amazon-s3-first">
|
1292 |
+
<td><label for="amazon_secret[]">Secret Access Key:</label></td>
|
1293 |
+
<td><input id="amazon_secret[]" name="amazon_secret[]" type="text" value="" /></td>
|
1294 |
+
</tr>
|
1295 |
+
<tr class="amazon-s3-first">
|
1296 |
+
<td colspan="2">
|
1297 |
+
<div class="alignright fv_fp_amazon_remove">
|
1298 |
+
<a href="#" onclick="fv_fp_amazon_s3_remove(this); return false">remove</a>
|
1299 |
+
</div>
|
1300 |
+
<div class="clear"></div>
|
1301 |
+
<hr style="border: 0; border-top: 1px solid #ccc;" />
|
1302 |
+
</td>
|
1303 |
+
</tr>
|
1304 |
+
|
1305 |
+
<tr class="amazon-s3-last"><td colspan="2"></td></tr>
|
1306 |
+
<tr>
|
1307 |
+
<td colspan="4">
|
1308 |
+
<input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
|
1309 |
+
<input type="button" id="amazon-s3-add" class="button" value="Add more Amazon S3 secure buckets" />
|
1310 |
+
</td>
|
1311 |
+
</tr>
|
1312 |
+
</table>
|
1313 |
+
</div>
|
1314 |
+
</div>
|
1315 |
+
</div><input type="hidden" id="closedpostboxesnonce" name="closedpostboxesnonce" value="d28516cc79" /><input type="hidden" id="meta-box-order-nonce" name="meta-box-order-nonce" value="3edef551d9" />
|
1316 |
+
</div>
|
1317 |
+
<div id='postbox-container-tab_actions' class='postbox-container' style="">
|
1318 |
+
<div id="normal-sortables" class="meta-box-sortables"><div id="fv_flowplayer_description" class="postbox " >
|
1319 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: </span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span> </span></h2>
|
1320 |
+
<div class="inside">
|
1321 |
+
<table class="form-table">
|
1322 |
+
<tr>
|
1323 |
+
<td colspan="4">
|
1324 |
+
<p>
|
1325 |
+
Here you can configure ads and banners that will be shown in the video. </p>
|
1326 |
+
</td>
|
1327 |
+
</tr>
|
1328 |
+
</table>
|
1329 |
+
</div>
|
1330 |
+
</div>
|
1331 |
+
<div id="fv_flowplayer_end_of_video" class="postbox " >
|
1332 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: End of Video</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>End of Video</span></h2>
|
1333 |
+
<div class="inside">
|
1334 |
+
<table class="form-table2" style="margin: 5px; ">
|
1335 |
+
<tr>
|
1336 |
+
<td style="width:150px;vertical-align:top;line-height:2.4em;"><label for="popups_default">Default Popup:</label></td>
|
1337 |
+
<td>
|
1338 |
+
|
1339 |
+
<p class="description"> <select id="popups_default" name="popups_default">
|
1340 |
+
<option selected value="no">None</option>
|
1341 |
+
<option value="random">Random</option>
|
1342 |
+
<option value="email-1">email-1 - Subscribe to list one</option> </select>
|
1343 |
+
You can set a default popup here and then skip it for individual videos.</p>
|
1344 |
+
</td>
|
1345 |
+
</tr>
|
1346 |
+
<tr>
|
1347 |
+
<td colspan="4">
|
1348 |
+
<input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
|
1349 |
+
</td>
|
1350 |
+
</tr>
|
1351 |
+
</table>
|
1352 |
+
</div>
|
1353 |
+
</div>
|
1354 |
+
<div id="fv_flowplayer_popups" class="postbox " >
|
1355 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Custom Popups</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Custom Popups</span></h2>
|
1356 |
+
<div class="inside">
|
1357 |
+
<p>Add any popups here which you would like to use with multiple videos.</p>
|
1358 |
+
<table class="form-table2" style="margin: 5px; ">
|
1359 |
+
<tr>
|
1360 |
+
<td>
|
1361 |
+
<table id="fv-player-popups-settings">
|
1362 |
+
<thead>
|
1363 |
+
<tr>
|
1364 |
+
<td>ID</td>
|
1365 |
+
<td></td>
|
1366 |
+
<td>Status</td>
|
1367 |
+
</tr>
|
1368 |
+
</thead>
|
1369 |
+
<tbody>
|
1370 |
+
<tr class='data' id="fv-player-popup-item-1">
|
1371 |
+
<td class='id'>1</td>
|
1372 |
+
<td>
|
1373 |
+
<table class='fv-player-popup-formats'>
|
1374 |
+
<tr>
|
1375 |
+
<td><label>Name:</label></td>
|
1376 |
+
<td><input type='text' maxlength="40" name='popups[1][name]' value='' placeholder='' /></td>
|
1377 |
+
</tr>
|
1378 |
+
<tr>
|
1379 |
+
<td><label>HTML:</label></td>
|
1380 |
+
<td><textarea class="large-text code" type='text' name='popups[1][html]' placeholder=''></textarea></td>
|
1381 |
+
</tr>
|
1382 |
+
<tr>
|
1383 |
+
<td><label>Custom<br />CSS:</label></td>
|
1384 |
+
<td><textarea class="large-text code" type='text' name='popups[1][css]' placeholder='.fv_player_popup-1 { }'></textarea></td>
|
1385 |
+
</tr>
|
1386 |
+
</table>
|
1387 |
+
</td>
|
1388 |
+
<td>
|
1389 |
+
<input type='hidden' name='popups[1][disabled]' value='0' />
|
1390 |
+
<input id='PopupAdDisabled-1' type='checkbox' name='popups[1][disabled]' value='1' />
|
1391 |
+
<label for='PopupAdDisabled-1'>Disable</label><br />
|
1392 |
+
<a class='fv-player-popup-remove' href=''>Remove</a></td>
|
1393 |
+
</tr>
|
1394 |
+
</tbody>
|
1395 |
+
</table>
|
1396 |
+
</td>
|
1397 |
+
</tr>
|
1398 |
+
<tr>
|
1399 |
+
<td>
|
1400 |
+
<input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
|
1401 |
+
<input type="button" value="Add more Popups" class="button" id="fv-player-popups-add" />
|
1402 |
+
</td>
|
1403 |
+
</tr>
|
1404 |
+
</table>
|
1405 |
+
|
1406 |
+
<script>
|
1407 |
+
|
1408 |
+
jQuery('#fv-player-popups-add').click( function() {
|
1409 |
+
var fv_player_popup_index = (parseInt( jQuery('#fv-player-popups-settings tr.data:last .id').html() ) || 0 ) + 1;
|
1410 |
+
jQuery('#fv-player-popups-settings').append(jQuery('#fv-player-popups-settings tr.data:first').prop('outerHTML').replace(/#fv_popup_dummy_key#/gi,fv_player_popup_index + ""));
|
1411 |
+
jQuery('#fv-player-popup-item-'+fv_player_popup_index).show();
|
1412 |
+
return false;
|
1413 |
+
} );
|
1414 |
+
|
1415 |
+
jQuery(document).on('click','.fv-player-popup-remove', false, function() {
|
1416 |
+
if( confirm('Are you sure you want to remove the popup ad?') ){
|
1417 |
+
jQuery(this).parents('.data').remove();
|
1418 |
+
if(jQuery('#fv-player-popups-settings .data').length === 1) {
|
1419 |
+
jQuery('#fv-player-popups-add').trigger('click');
|
1420 |
+
}
|
1421 |
+
}
|
1422 |
+
return false;
|
1423 |
+
} );
|
1424 |
+
</script>
|
1425 |
+
</div>
|
1426 |
+
</div>
|
1427 |
+
<div id="fv_flowplayer_email_lists" class="postbox " >
|
1428 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Email Popups</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Email Popups</span></h2>
|
1429 |
+
<div class="inside">
|
1430 |
+
<p>Lists defined here can be used for subscription box for each video or for Default Popup above.</p>
|
1431 |
+
<table class="form-table2" style="margin: 5px; ">
|
1432 |
+
<tr>
|
1433 |
+
<td>
|
1434 |
+
<table id="fv-player-email_lists-settings">
|
1435 |
+
<thead>
|
1436 |
+
<tr>
|
1437 |
+
<td>ID</td>
|
1438 |
+
<td style="width: 40%">Properties</td>
|
1439 |
+
<td>Export</td>
|
1440 |
+
<td>Options</td>
|
1441 |
+
<td>Status</td>
|
1442 |
+
<td></td>
|
1443 |
+
</tr>
|
1444 |
+
</thead>
|
1445 |
+
<tbody>
|
1446 |
+
<tr class='data' id="fv-player-list-item-#fv_list_dummy_key#"style="display:none">
|
1447 |
+
<td class='id'>#fv_list_dummy_key#</td>
|
1448 |
+
<td>
|
1449 |
+
<table>
|
1450 |
+
<tr>
|
1451 |
+
<td style="width:16%"><label>Header</label></td>
|
1452 |
+
<td><input type='text' name='email_lists[#fv_list_dummy_key#][title]' value='' /></td>
|
1453 |
+
</tr>
|
1454 |
+
<tr>
|
1455 |
+
<td><label>Message</label></td>
|
1456 |
+
<td><input type='text' name='email_lists[#fv_list_dummy_key#][description]' value='' /></td>
|
1457 |
+
</tr>
|
1458 |
+
</table>
|
1459 |
+
</td>
|
1460 |
+
<td>
|
1461 |
+
<a class='fv-player-list-export' href='http://example.org/wp-admin/options-general.php?page=fvplayer&fv-email-export=#fv_list_dummy_key#' target="_blank" >Download CSV</a>
|
1462 |
+
<br />
|
1463 |
+
<a class='fv-player-list-export' href='http://example.org/wp-admin/options-general.php?page=fvplayer&fv-email-export-screen=#fv_list_dummy_key#' target="_blank" >View list</a>
|
1464 |
+
</td>
|
1465 |
+
<td>
|
1466 |
+
<input type='hidden' name='email_lists[#fv_list_dummy_key#][first_name]' value='0' />
|
1467 |
+
<input id='list-first-name-#fv_list_dummy_key#' title="first name" type='checkbox' name='email_lists[#fv_list_dummy_key#][first_name]' value='1' />
|
1468 |
+
<label for='list-first-name-#fv_list_dummy_key#'>First Name</label>
|
1469 |
+
<br />
|
1470 |
+
<input type='hidden' name='email_lists[#fv_list_dummy_key#][last_name]' value='0' />
|
1471 |
+
<input id='list-last-name-#fv_list_dummy_key#' title="last name" type='checkbox' name='email_lists[#fv_list_dummy_key#][last_name]' value='1' />
|
1472 |
+
<label for='list-last-name-#fv_list_dummy_key#'>Last Name</label>
|
1473 |
+
</td>
|
1474 |
+
<td>
|
1475 |
+
<input type='hidden' name='email_lists[#fv_list_dummy_key#][disabled]' value='0' />
|
1476 |
+
<input id='ListAdDisabled-#fv_list_dummy_key#' type='checkbox' title="disable" name='email_lists[#fv_list_dummy_key#][disabled]' value='1' />
|
1477 |
+
<label for='ListAdDisabled-#fv_list_dummy_key#'>Disable</label>
|
1478 |
+
<br />
|
1479 |
+
<a class='fv-player-list-remove' href=''>Remove</a>
|
1480 |
+
</td>
|
1481 |
+
<td>
|
1482 |
+
<input type="button" style="visibility: hidden" class="fv_player_email_list_save button" value="Save & Preview" />
|
1483 |
+
</td>
|
1484 |
+
</tr>
|
1485 |
+
<tr class='data' id="fv-player-list-item-1">
|
1486 |
+
<td class='id'>1</td>
|
1487 |
+
<td>
|
1488 |
+
<table>
|
1489 |
+
<tr>
|
1490 |
+
<td style="width:16%"><label>Header</label></td>
|
1491 |
+
<td><input type='text' name='email_lists[1][title]' value='Subscribe to list one' /></td>
|
1492 |
+
</tr>
|
1493 |
+
<tr>
|
1494 |
+
<td><label>Message</label></td>
|
1495 |
+
<td><input type='text' name='email_lists[1][description]' value='Two good reasons to subscribe right now' /></td>
|
1496 |
+
</tr>
|
1497 |
+
</table>
|
1498 |
+
</td>
|
1499 |
+
<td>
|
1500 |
+
<a class='fv-player-list-export' href='http://example.org/wp-admin/options-general.php?page=fvplayer&fv-email-export=1' target="_blank" >Download CSV</a>
|
1501 |
+
<br />
|
1502 |
+
<a class='fv-player-list-export' href='http://example.org/wp-admin/options-general.php?page=fvplayer&fv-email-export-screen=1' target="_blank" >View list</a>
|
1503 |
+
</td>
|
1504 |
+
<td>
|
1505 |
+
<input type='hidden' name='email_lists[1][first_name]' value='0' />
|
1506 |
+
<input id='list-first-name-1' title="first name" type='checkbox' name='email_lists[1][first_name]' value='1' checked="checked" />
|
1507 |
+
<label for='list-first-name-1'>First Name</label>
|
1508 |
+
<br />
|
1509 |
+
<input type='hidden' name='email_lists[1][last_name]' value='0' />
|
1510 |
+
<input id='list-last-name-1' title="last name" type='checkbox' name='email_lists[1][last_name]' value='1' />
|
1511 |
+
<label for='list-last-name-1'>Last Name</label>
|
1512 |
+
</td>
|
1513 |
+
<td>
|
1514 |
+
<input type='hidden' name='email_lists[1][disabled]' value='0' />
|
1515 |
+
<input id='ListAdDisabled-1' type='checkbox' title="disable" name='email_lists[1][disabled]' value='1' />
|
1516 |
+
<label for='ListAdDisabled-1'>Disable</label>
|
1517 |
+
<br />
|
1518 |
+
<a class='fv-player-list-remove' href=''>Remove</a>
|
1519 |
+
</td>
|
1520 |
+
<td>
|
1521 |
+
<input type="button" style="visibility: hidden" class="fv_player_email_list_save button" value="Save & Preview" />
|
1522 |
+
</td>
|
1523 |
+
</tr>
|
1524 |
+
</tbody>
|
1525 |
+
</table>
|
1526 |
+
</td>
|
1527 |
+
</tr>
|
1528 |
+
<tr>
|
1529 |
+
<td>
|
1530 |
+
<input type="button" value="Add More Lists" class="button" id="fv-player-email_lists-add" />
|
1531 |
+
</td>
|
1532 |
+
</tr>
|
1533 |
+
</table>
|
1534 |
+
|
1535 |
+
<script>
|
1536 |
+
jQuery('#fv-player-email_lists-add').click( function() {
|
1537 |
+
var fv_player_list_index = (parseInt( jQuery('#fv-player-email_lists-settings tr.data:last .id').html() ) || 0 ) + 1;
|
1538 |
+
jQuery('#fv-player-email_lists-settings').append(jQuery('#fv-player-email_lists-settings tr.data:first').prop('outerHTML').replace(/#fv_list_dummy_key#/gi,fv_player_list_index + ""));
|
1539 |
+
jQuery('#fv-player-list-item-' + fv_player_list_index).show();
|
1540 |
+
return false;
|
1541 |
+
} );
|
1542 |
+
|
1543 |
+
jQuery(document).on('click','.fv-player-list-remove', false, function() {
|
1544 |
+
if( confirm('Are you sure you want to remove the list?') ){
|
1545 |
+
jQuery(this).parents('.data').remove();
|
1546 |
+
if(jQuery('#fv-player-email_lists-settings .data').length === 1) {
|
1547 |
+
jQuery('#fv-player-email_lists-add').trigger('click');
|
1548 |
+
}
|
1549 |
+
}
|
1550 |
+
return false;
|
1551 |
+
} );
|
1552 |
+
|
1553 |
+
jQuery(document).on('keydown change', '#fv-player-email_lists-settings', function(e) {
|
1554 |
+
var row = jQuery(e.target).parents('[id^="fv-player-list-item-"]');
|
1555 |
+
row.find('.fv_player_email_list_save').css('visibility','visible');
|
1556 |
+
});
|
1557 |
+
jQuery(document).on('click', '#fv-player-email_lists-settings input[type=checkbox]', function(e) {
|
1558 |
+
var row = jQuery(e.target).parents('[id^="fv-player-list-item-"]');
|
1559 |
+
row.find('.fv_player_email_list_save').css('visibility','visible');
|
1560 |
+
});
|
1561 |
+
|
1562 |
+
jQuery(document).on('click', '.fv_player_email_list_save', function() {
|
1563 |
+
var button = jQuery(this);
|
1564 |
+
var row = button.parents('[id^="fv-player-list-item-"]');
|
1565 |
+
var aInputs = row.find('input, select');
|
1566 |
+
var key = row.attr('id').replace(/fv-player-list-item-/,'');
|
1567 |
+
|
1568 |
+
fv_player_open_preview_window(null,640,360+100);
|
1569 |
+
|
1570 |
+
button.prop('disabled',true);
|
1571 |
+
jQuery.ajax( {
|
1572 |
+
type: "POST",
|
1573 |
+
url: ajaxurl,
|
1574 |
+
data: aInputs.serialize()+'&key='+key+'&action=fv_player_email_subscription_save&_wpnonce=71bf337548',
|
1575 |
+
success: function(response) {
|
1576 |
+
button.css('visibility','hidden');
|
1577 |
+
button.prop('disabled', false);
|
1578 |
+
|
1579 |
+
row.replaceWith( jQuery('#'+row.attr('id'),response) );
|
1580 |
+
|
1581 |
+
var shortcode = '[fvplayer src="https://player.vimeo.com/external/196881410.hd.mp4?s=24645ecff21ff60079fc5b7715a97c00f90c6a18&profile_id=174&oauth2_token_id=3501005" splash="https://i.vimeocdn.com/video/609485450_1280.jpg" preroll="no" postroll="no" subtitles="http://example.org/wp-content/plugins/fv-wordpress-flowplayer/images/test-subtitles.vtt" end_popup_preview="true" popup="email-#key#" caption="This is how the popup will appear at the end of a video"]';
|
1582 |
+
shortcode = shortcode.replace(/#key#/,key);
|
1583 |
+
|
1584 |
+
var url = 'http://example.org?fv_player_embed=1&fv_player_preview=' + b64EncodeUnicode(shortcode);
|
1585 |
+
fv_player_open_preview_window(url);
|
1586 |
+
},
|
1587 |
+
error: function() {
|
1588 |
+
button.val('Error saving!');
|
1589 |
+
}
|
1590 |
+
} );
|
1591 |
+
});
|
1592 |
+
</script>
|
1593 |
+
</div>
|
1594 |
+
</div>
|
1595 |
+
<div id="fv_flowplayer_email_integration" class="postbox " >
|
1596 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Email Integration</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Email Integration</span></h2>
|
1597 |
+
<div class="inside">
|
1598 |
+
<p>Enter your service API key and then assign it to a list which you create above.</p>
|
1599 |
+
<table class="form-table2" style="margin: 5px; ">
|
1600 |
+
<tr>
|
1601 |
+
<td style="width: 250px"><label for="mailchimp_api">Mailchimp API key:</label></td>
|
1602 |
+
<td>
|
1603 |
+
<p class="description">
|
1604 |
+
<input type="text" name="mailchimp_api" id="mailchimp_api" value="" />
|
1605 |
+
</p>
|
1606 |
+
</td>
|
1607 |
+
</tr>
|
1608 |
+
<tr>
|
1609 |
+
<td></td>
|
1610 |
+
<td>
|
1611 |
+
<input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
|
1612 |
+
</td>
|
1613 |
+
</tr>
|
1614 |
+
</table>
|
1615 |
+
</div>
|
1616 |
+
</div>
|
1617 |
+
<div id="fv_flowplayer_ads" class="postbox " >
|
1618 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Ads</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Ads</span></h2>
|
1619 |
+
<div class="inside">
|
1620 |
+
<table class="form-table2">
|
1621 |
+
<tr>
|
1622 |
+
<td colspan="2">
|
1623 |
+
<label for="ad">Default Ad Code:</label><br />
|
1624 |
+
<textarea id="ad" name="ad" class="large-text code"></textarea>
|
1625 |
+
</td>
|
1626 |
+
</tr>
|
1627 |
+
<tr>
|
1628 |
+
<td colspan="2"><label for="ad_width">Default set size [px]:</label>
|
1629 |
+
<label for="ad_width">W:</label> <input type="text" name="ad_width" id="ad_width" value="0" class="small" />
|
1630 |
+
<label for="ad_height">H:</label> <input type="text" name="ad_height" id="ad_height" value="0" class="small" />
|
1631 |
+
<label for="adTextColor">Ad text</label> <input class="color small" type="text" name="adTextColor" id="adTextColor" value="#888" />
|
1632 |
+
<label for="adLinksColor">Ad links</label> <input class="color small" type="text" name="adLinksColor" id="adLinksColor" value="#ff3333" />
|
1633 |
+
</td>
|
1634 |
+
</tr>
|
1635 |
+
<tr>
|
1636 |
+
<td>
|
1637 |
+
<label for="ad_show_after">Show After [s]:</label> <input type="text" name="ad_show_after" id="ad_show_after" value="0" class="small" />
|
1638 |
+
</td>
|
1639 |
+
</tr>
|
1640 |
+
<tr>
|
1641 |
+
<td colspan="2">
|
1642 |
+
<label for="ad_css_select">Ad CSS:</label>
|
1643 |
+
<a href="#" onclick="jQuery('.ad_css_wrap').show(); jQuery(this).hide(); return false">Show styling options</a>
|
1644 |
+
<div class="ad_css_wrap" style="display: none; ">
|
1645 |
+
<select id="ad_css_select">
|
1646 |
+
<option value="">Select your preset</option>
|
1647 |
+
<option value=".wpfp_custom_ad { position: absolute; bottom: 10%; z-index: 20; width: 100%; }
|
1648 |
+
.wpfp_custom_ad_content { background: white; margin: 0 auto; position: relative }" selected="selected">Default (white, centered above the control bar)</option>
|
1649 |
+
<option value=".wpfp_custom_ad { position: absolute; bottom: 0; z-index: 20; width: 100%; }
|
1650 |
+
.wpfp_custom_ad_content { background: white; margin: 0 auto; position: relative }">White, centered at the bottom of the video</option>
|
1651 |
+
</select>
|
1652 |
+
<br />
|
1653 |
+
<textarea rows="5" name="ad_css" id="ad_css" class="large-text code">.wpfp_custom_ad { position: absolute; bottom: 10%; z-index: 20; width: 100%; }
|
1654 |
+
.wpfp_custom_ad_content { background: white; margin: 0 auto; position: relative }</textarea>
|
1655 |
+
<p class="description">(Hint: put .wpfp_custom_ad_content before your own CSS selectors)</p>
|
1656 |
+
<script type="text/javascript">
|
1657 |
+
jQuery('#ad_css_select').change( function() {
|
1658 |
+
if( jQuery('#ad_css_select option:selected').val().length > 0 && jQuery('#ad_css_select option:selected').val() != jQuery('#ad_css').val() && confirm('Are you sure you want to apply the preset?') ) {
|
1659 |
+
jQuery('#ad_css').val( jQuery('#ad_css_select option:selected').val() );
|
1660 |
+
}
|
1661 |
+
} );
|
1662 |
+
</script>
|
1663 |
+
</div>
|
1664 |
+
</td>
|
1665 |
+
</tr>
|
1666 |
+
<tr>
|
1667 |
+
<td colspan="4">
|
1668 |
+
<input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
|
1669 |
+
</td>
|
1670 |
+
</tr>
|
1671 |
+
</table>
|
1672 |
+
</div>
|
1673 |
+
</div>
|
1674 |
+
</div><input type="hidden" id="closedpostboxesnonce" name="closedpostboxesnonce" value="d28516cc79" /><input type="hidden" id="meta-box-order-nonce" name="meta-box-order-nonce" value="3edef551d9" />
|
1675 |
+
</div>
|
1676 |
+
<div id='postbox-container-tab_video_intelligence' class='postbox-container' style="">
|
1677 |
+
<div id="normal-sortables" class="meta-box-sortables"><div id="fv_flowplayer_video_intelligence" class="postbox " >
|
1678 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: video intelligence</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>video intelligence</span></h2>
|
1679 |
+
<div class="inside">
|
1680 |
+
<style>
|
1681 |
+
#fv_flowplayer_video_intelligence_revival { display: none }
|
1682 |
+
</style>
|
1683 |
+
<input type="hidden" id="nonce_fv_player_vi_install" name="nonce_fv_player_vi_install" value="d9672c9ed6" /><input type="hidden" name="_wp_http_referer" value="" />
|
1684 |
+
<table class="form-table2" style="margin: 5px; ">
|
1685 |
+
<tbody>
|
1686 |
+
<tr>
|
1687 |
+
<td class="first">
|
1688 |
+
<img src="http://example.org/wp-content/plugins/fv-wordpress-flowplayer/images/vi-logo.svg" alt="video intelligence logo" />
|
1689 |
+
<a href="https://vi.ai/publisher-video-monetization/?aid=foliovision&email=&url=http://example.org&invtype=3#publisher_signup" target="_blank" class="button vi-register">Learn More</a>
|
1690 |
+
</td>
|
1691 |
+
<td>
|
1692 |
+
<p>Video content and video advertising – powered by <strong>video intelligence</strong></p>
|
1693 |
+
<p>Advertisers pay more for video advertising when it's matched with video content. This new video player will insert both on your page. It increases time on site, and commands a higher CPM than display advertising.</p>
|
1694 |
+
<p>You'll see video content that is matched to your sites keywords straight away. A few days after activation you'll begin to receive revenue from advertising served before this video content.</p>
|
1695 |
+
<ul>
|
1696 |
+
<li>The set up takes only a few minutes</li>
|
1697 |
+
<li>Up to 10x higher CPM than traditional display advertising</li>
|
1698 |
+
<li>Users spend longer on your site thanks to professional video content</li>
|
1699 |
+
</ul>
|
1700 |
+
</td>
|
1701 |
+
</tr>
|
1702 |
+
<tr>
|
1703 |
+
<td></td>
|
1704 |
+
<td>
|
1705 |
+
<p>By clicking sign up you agree to send your current domain, email and affiliate ID to video intelligence.</p>
|
1706 |
+
<a href="https://vi.ai/publisher-video-monetization/?aid=foliovision&email=&url=http://example.org&invtype=3#publisher_signup" target="_blank" class="button vi-register">Learn More or Create an Account</a>
|
1707 |
+
</td>
|
1708 |
+
</tr>
|
1709 |
+
</tbody>
|
1710 |
+
</table>
|
1711 |
+
|
1712 |
+
</div>
|
1713 |
+
</div>
|
1714 |
+
<div id="fv_flowplayer_video_intelligence_account" class="postbox " >
|
1715 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Account</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Account</span></h2>
|
1716 |
+
<div class="inside">
|
1717 |
+
<input type="hidden" id="nonce_fv_player_vi_install" name="nonce_fv_player_vi_install" value="d9672c9ed6" /><input type="hidden" name="_wp_http_referer" value="" />
|
1718 |
+
<table class="form-table2" style="margin: 5px; ">
|
1719 |
+
<tbody>
|
1720 |
+
<tr>
|
1721 |
+
<td class="first"><label for="vi_login">Login:</label></td>
|
1722 |
+
<td>
|
1723 |
+
<p class="description">
|
1724 |
+
<input type="text" name="vi_login" id="vi_login" class="medium" />
|
1725 |
+
</p>
|
1726 |
+
</td>
|
1727 |
+
</tr>
|
1728 |
+
<tr>
|
1729 |
+
<td><label for="vi_pass">Password:</label></td>
|
1730 |
+
<td>
|
1731 |
+
<p class="description">
|
1732 |
+
<input type="password" name="vi_pass" id="vi_pass" class="medium" />
|
1733 |
+
</p>
|
1734 |
+
</td>
|
1735 |
+
</tr>
|
1736 |
+
<tr>
|
1737 |
+
<td>
|
1738 |
+
</td>
|
1739 |
+
<td>
|
1740 |
+
<input type="submit" name="fv_player_vi_install" value="Sign in" class="button-primary">
|
1741 |
+
</td>
|
1742 |
+
</tr>
|
1743 |
+
<tr>
|
1744 |
+
<td></td>
|
1745 |
+
<td>
|
1746 |
+
<p><a href="mailto:support@vi.ai?Subject=Issues%20with%20account%20activation%20for%20http%3A%2F%2Fexample.org">I'm having issues with the account activation</a></p>
|
1747 |
+
</td>
|
1748 |
+
</tr>
|
1749 |
+
</tbody>
|
1750 |
+
</table>
|
1751 |
+
|
1752 |
+
|
1753 |
+
|
1754 |
+
</div>
|
1755 |
+
</div>
|
1756 |
+
<div id="fv_flowplayer_video_intelligence_hide" class="postbox " >
|
1757 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Hide vi Ads</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Hide vi Ads</span></h2>
|
1758 |
+
<div class="inside">
|
1759 |
+
<input id="fv-player-vi-remove" type="checkbox"> <label for="fv-player-vi-remove">Hide the vi Ads tab</label>
|
1760 |
+
<script>
|
1761 |
+
jQuery( function($) {
|
1762 |
+
$('#fv-player-vi-remove').click( function() {
|
1763 |
+
$.post(ajaxurl, {action:'fv-player-vi-remove'}, function() {
|
1764 |
+
$('#fv-player-vi-give-back').prop('checked',false);
|
1765 |
+
$('[href=#postbox-container-tab_video_intelligence]').hide();
|
1766 |
+
$('#fv_flowplayer_video_intelligence').hide();
|
1767 |
+
$('[href=#postbox-container-tab_video_ads]').click();
|
1768 |
+
$('#fv_flowplayer_video_intelligence_revival').show();
|
1769 |
+
});
|
1770 |
+
|
1771 |
+
});
|
1772 |
+
});
|
1773 |
+
</script>
|
1774 |
+
</div>
|
1775 |
+
</div>
|
1776 |
+
</div><input type="hidden" id="closedpostboxesnonce" name="closedpostboxesnonce" value="d28516cc79" /><input type="hidden" id="meta-box-order-nonce" name="meta-box-order-nonce" value="3edef551d9" />
|
1777 |
+
</div>
|
1778 |
+
<div id='postbox-container-tab_help' class='postbox-container' style="">
|
1779 |
+
<div id="normal-sortables" class="meta-box-sortables"><div id="fv_flowplayer_usage" class="postbox " >
|
1780 |
+
<button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Usage</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Usage</span></h2>
|
1781 |
+
<div class="inside">
|
1782 |
+
<table class="form-table">
|
1783 |
+
<tr>
|
1784 |
+
<td colspan="4">
|
1785 |
+
<div class="column">
|
1786 |
+
<div class="icon32" id="icon-users"><br></div>
|
1787 |
+
<p>Illustrated user guides:</p>
|
1788 |
+
<div class="clear"></div>
|
1789 |
+
<ul>
|
1790 |
+
<li><a target="_blank" href="https://foliovision.com/player/basic-setup/start-up-guide#insert-videos">Inserting videos</a>
|
1791 |
+
<li><a target="_blank" href="https://foliovision.com/player/basic-setup/start-up-guide">License key and custom logo</a></li>
|
1792 |
+
<li><a target="_blank" href="https://foliovision.com/player/basic-setup/creating-playlists">How to create a playlist</a></li>
|
1793 |
+
<li><a target="_blank" href="https://foliovision.com/player/ads">Using ads</a></li>
|
1794 |
+
<li><a target="_blank" href="https://foliovision.com/player/ads/incorporating-google-adsense">Using Google Ads</a></li>
|
1795 |
+
<li><a target="_blank" href="https://foliovision.com/player/video-hosting/securing-your-video/rtmp-streams">RTMP streams</a></li>
|
1796 |
+
<li><a target="_blank" href="https://foliovision.com/player/advanced/subtitles">Subtitles</a></li>
|
1797 |
+
<li><a target="_blank" href="https://foliovision.com/player/video-hosting/secure-amazon-s3-guide">Amazon S3 secure content guide</a></li>
|
1798 |
+
<li><a target="_blank" href="https://foliovision.com/player/video-hosting/securing-your-video/hls-stream">How to setup a HLS stream</a></li>
|
1799 |
+
<li><a target="_blank" href="https://foliovision.com/player/advanced/google-analytics-flowplayer">Google Analytics support</a></li>
|
1800 |
+
<li><a target="_blank" href="https://foliovision.com/player/basic-setup/using-lightbox">Video lightbox</a></li>
|
1801 |
+
<li><a target="_blank" href="https://foliovision.com/player/video-hosting/youtube-with-fv-player">YouTube integration</a></li>
|
1802 |
+
<li><a target="_blank" href="https://foliovision.com/player/basic-setup/setting-quality-switching">Quality Switching</a></li>
|
1803 |
+
<li><a target="_blank" href="https://foliovision.com/player/video-hosting/how-to-use-vimeo">Vimeo integration</a></li>
|
1804 |
+
<li><a target="_blank" href="https://foliovision.com/player/ads/using-preroll-postroll-ads">Custom video ads</a></li>
|
1805 |
+
<li><a target="_blank" href="https://foliovision.com/player/video-hosting/serving-private-cloudfront">CloudFront CDN - protected video downloads</a></li>
|
1806 |
+
</ul>
|
1807 |
+
</div>
|
1808 |
+
<div class="column">
|
1809 |
+
<div class="icon32" id="icon-tools"><br></div>
|
1810 |
+
<p>Troubleshooting:</p>
|
1811 |
+
<div class="clear"></div>
|
1812 |
+
<ul>
|
1813 |
+
<li><a target="_blank" href="https://foliovision.com/player/basic-setup/installation">Automated checks</a></li>
|
1814 |
+
<li><a target="_blank" href="https://foliovision.com/player/basic-setup/encoding">Video encoding tips</a></li>
|
1815 |
+
<li><a target="_blank" href="https://foliovision.com/player/basic-setup/encoding#flash-only">Video formats to avoid</a></li>
|
1816 |
+
<li><a target="_blank" href="https://foliovision.com/player/video-hosting/secure-amazon-s3-guide/fix-amazon-mime-type">Fixing mime type on Amazon S3</a></li>
|
1817 |
+
<li><a target="_blank" href="https://foliovision.com/player/basic-setup/faq">Plugin FAQ</a></li>
|
1818 |
+
<li><a target="_blank" href="http://foliovision.com/support/fv-wordpress-flowplayer/">Support forums</a></li>
|
1819 |
+
</ul>
|
1820 |
+
</div>
|
1821 |
+
<div class="clear"></div>
|
1822 |
+
<!--<p>
|
1823 |
+
To embed video "example.mp4", simply include the following code inside any post or page:
|
1824 |
+
<code>[fvplayer src=example.mp4]</code>
|
1825 |
+
</p>
|
1826 |
+
<p>
|
1827 |
+
<code>src</code> is the only compulsory parameter, specifying the video file. Its value can be either a full URL of the file,
|
1828 |
+
or just a filename (if it is located in the /videos/ directory in the root of the web).
|
1829 |
+
</p>
|
1830 |
+
<p>When user uploads are allowed, uploading or selecting video from WP Media Library is available. To insert selected video, simply use the 'Insert into Post' button.</p>
|
1831 |
+
<h4>Optional parameters:</h4>
|
1832 |
+
<ul style="text-align: left;">
|
1833 |
+
<li><code><strong>width</strong></code> and <code><strong>height</strong></code> specify the dimensions of played video in pixels. If they are not set, the default size is 320x240.<br />
|
1834 |
+
<i>Example</i>: <code>[fvplayer src='example.mp4' width=640 height=480]</code></li>
|
1835 |
+
<li><code><strong>splash</strong></code> parameter can be used to display a custom splash image before the video starts. Just like in case of <code>src</code>
|
1836 |
+
parameter, its value can be either complete URL, or filename of an image located in /videos/ folder.<br />
|
1837 |
+
<i>Example</i>: <code>[fvplayer src='example.mp4' splash=image.jpg]</code></li>
|
1838 |
+
<li><code><strong>splashend</strong></code> parameter can be used to display a custom splash image after the video ends.<br />
|
1839 |
+
<i>Example</i>: <code>[fvplayer src='example.mp4' splashend=show]</code></li>
|
1840 |
+
<li><code><strong>autoplay</strong></code> parameter specify wheter the video should start to play automaticaly after the page is loaded. This parameter overrides the default autoplay setting above. Its value can be either true or false.<br />
|
1841 |
+
<i>Example</i>: <code>[fvplayer src='example.mp4' autoplay=true]</code></li>
|
1842 |
+
<li><code><strong>loop</strong></code> parameter specify wheter the video starts again from the beginning when the video ends. Its value can be either true or false.<br />
|
1843 |
+
<i>Example</i>: <code>[fvplayer src='example.mp4' loop=true]</code></li>
|
1844 |
+
<li><code><strong>popup</strong></code> parameter can be used to display any HTML code after the video finishes (ideal for advertisment or links to similar videos).
|
1845 |
+
Content you want to display must be between simple quotes (<code>''</code>).<br />
|
1846 |
+
<i>Example</i>: <code>[fvplayer src='example.mp4' popup='<p>some HTML content</p>']</code></li>
|
1847 |
+
<li><code><strong>redirect</strong></code> parameter can be used to redirect to another page (in a new tab) after the video ends.<br />
|
1848 |
+
<i>Example</i>: <code>[fvplayer src='example.mp4' redirect='http://www.site.com']</code></li>
|
1849 |
+
</ul>-->
|
1850 |
+
</td>
|
1851 |
+
<td></td>
|
1852 |
+
</tr>
|
1853 |
+
</table>
|
1854 |
+
</div>
|
1855 |
+
</div>
|
1856 |
+
</div><input type="hidden" id="closedpostboxesnonce" name="closedpostboxesnonce" value="d28516cc79" /><input type="hidden" id="meta-box-order-nonce" name="meta-box-order-nonce" value="3edef551d9" />
|
1857 |
+
</div>
|
1858 |
+
<div style="clear: both"></div>
|
1859 |
+
</div>
|
1860 |
+
<input type="hidden" id="fv_flowplayer_settings_nonce" name="fv_flowplayer_settings_nonce" value="6efb8df58f" /><input type="hidden" name="_wp_http_referer" value="" /> </form>
|
1861 |
+
|
1862 |
+
</div>
|
1863 |
+
<script type="text/javascript" >
|
1864 |
+
function flowplayer_conversion_script() {
|
1865 |
+
jQuery('#fv-flowplayer-loader').show();
|
1866 |
+
|
1867 |
+
var data = {
|
1868 |
+
action: 'flowplayer_conversion_script',
|
1869 |
+
run: true
|
1870 |
+
};
|
1871 |
+
|
1872 |
+
jQuery.post(ajaxurl, data, function(response) {
|
1873 |
+
jQuery('#fv-flowplayer-loader').hide();
|
1874 |
+
jQuery('#conversion-results').html(response);
|
1875 |
+
jQuery('#fvwpflowplayer_conversion_notice').hide();
|
1876 |
+
});
|
1877 |
+
}
|
1878 |
+
|
1879 |
+
function fv_flowplayer_ajax_check( type ) {
|
1880 |
+
jQuery('.'+type+'-spin').show();
|
1881 |
+
var ajaxurl = 'http://example.org/wp-admin/admin-ajax.php';
|
1882 |
+
jQuery.post( ajaxurl, { action: type }, function( response ) {
|
1883 |
+
response = response.replace( /[\s\S]*<FVFLOWPLAYER>/, '' );
|
1884 |
+
response = response.replace( /<\/FVFLOWPLAYER>[\s\S]*/, '' );
|
1885 |
+
try {
|
1886 |
+
var obj = (jQuery.parseJSON( response ) );
|
1887 |
+
var css_class = '';
|
1888 |
+
jQuery('#fv_flowplayer_admin_notices').html('');
|
1889 |
+
if( obj.errors && obj.errors.length > 0 ) {
|
1890 |
+
jQuery('#fv_flowplayer_admin_notices').append( '<div class="error"><p>'+obj.errors.join('</p><p>')+'</p></div>' );
|
1891 |
+
} else {
|
1892 |
+
css_class = ' green';
|
1893 |
+
}
|
1894 |
+
|
1895 |
+
if( obj.ok && obj.ok.length > 0 ) {
|
1896 |
+
jQuery('#fv_flowplayer_admin_notices').append( '<div class="updated'+css_class+'"><p>'+obj.ok.join('</p><p>')+'</p></div>' );
|
1897 |
+
}
|
1898 |
+
|
1899 |
+
} catch(err) {
|
1900 |
+
jQuery('#fv_flowplayer_admin_notices').append( jQuery('#wpbody', response ) );
|
1901 |
+
|
1902 |
+
}
|
1903 |
+
|
1904 |
+
jQuery('.'+type+'-spin').hide();
|
1905 |
+
} );
|
1906 |
+
}
|
1907 |
+
|
1908 |
+
var fv_flowplayer_amazon_s3_count = 0;
|
1909 |
+
jQuery('#amazon-s3-add').click( function() {
|
1910 |
+
var new_inputs = jQuery('tr.amazon-s3-first').clone();
|
1911 |
+
new_inputs.find('input').attr('value','');
|
1912 |
+
new_inputs.attr('class', new_inputs.attr('class') + '-' + fv_flowplayer_amazon_s3_count );
|
1913 |
+
new_inputs.insertBefore('.amazon-s3-last');
|
1914 |
+
fv_flowplayer_amazon_s3_count++;
|
1915 |
+
return false;
|
1916 |
+
} );
|
1917 |
+
|
1918 |
+
function fv_fp_amazon_s3_remove(a) {
|
1919 |
+
jQuery( '.'+jQuery(a).parents('tr').attr('class') ).remove();
|
1920 |
+
}
|
1921 |
+
</script>
|
1922 |
+
|
1923 |
+
|
1924 |
+
<script type="text/javascript">
|
1925 |
+
//<![CDATA[
|
1926 |
+
jQuery(document).ready( function($) {
|
1927 |
+
// close postboxes that should be closed
|
1928 |
+
$('.if-js-closed').removeClass('if-js-closed').addClass('closed');
|
1929 |
+
// postboxes setup
|
1930 |
+
postboxes.add_postbox_toggles('fv_flowplayer_settings');
|
1931 |
+
|
1932 |
+
jQuery('.fv_wp_flowplayer_activate_extension').click( function() { // todo: block multiple clicks
|
1933 |
+
var button = jQuery(this);
|
1934 |
+
button.siblings('img').eq(0).show();
|
1935 |
+
|
1936 |
+
jQuery.post( ajaxurl, { action: 'fv_wp_flowplayer_activate_extension', nonce: 'a3b037f3a9', plugin: jQuery(this).attr("data-plugin") }, function( response ) {
|
1937 |
+
button.siblings('img').eq(0).hide();
|
1938 |
+
|
1939 |
+
var obj;
|
1940 |
+
try {
|
1941 |
+
response = response.replace( /[\s\S]*<FVFLOWPLAYER>/, '' );
|
1942 |
+
response = response.replace( /<\/FVFLOWPLAYER>[\s\S]*/, '' );
|
1943 |
+
obj = jQuery.parseJSON( response );
|
1944 |
+
|
1945 |
+
button.removeClass('fv_wp_flowplayer_activate_extension');
|
1946 |
+
button.attr('value',obj.message);
|
1947 |
+
|
1948 |
+
if( typeof(obj.error) == "undefined" ) {
|
1949 |
+
//window.location.hash = '#'+jQuery(button).attr("data-plugin");
|
1950 |
+
//window.location.reload(true);
|
1951 |
+
window.location.href = window.location.href;
|
1952 |
+
}
|
1953 |
+
} catch(e) { // todo: what if there is "<p>Plugin install failed.</p>"
|
1954 |
+
button.after('<p>Error parsing JSON</p>');
|
1955 |
+
return;
|
1956 |
+
}
|
1957 |
+
|
1958 |
+
} ).error(function() {
|
1959 |
+
button.siblings('img').eq(0).hide();
|
1960 |
+
button.after('<p>Error!</p>');
|
1961 |
+
});
|
1962 |
+
} );
|
1963 |
+
|
1964 |
+
jQuery('.fv-flowplayer-admin-addon-installed').click( function() {
|
1965 |
+
jQuery('html, body').animate({
|
1966 |
+
scrollTop: jQuery("#"+jQuery(this).attr("data-plugin") ).offset().top
|
1967 |
+
}, 1000);
|
1968 |
+
} );
|
1969 |
+
|
1970 |
+
jQuery('.show-more').click( function(e) {
|
1971 |
+
e.preventDefault();
|
1972 |
+
|
1973 |
+
var more = jQuery('.more', jQuery(this).parents('tr') ).length ? jQuery('.more', jQuery(this).parents('tr') ) : jQuery(this).parent().siblings('.more');
|
1974 |
+
|
1975 |
+
more.toggle();
|
1976 |
+
|
1977 |
+
if( jQuery(':visible', more ).length > 0 ) {
|
1978 |
+
jQuery(this).attr('data-original-help-text', jQuery(this).html() );
|
1979 |
+
jQuery(this).html('(hide)');
|
1980 |
+
} else {
|
1981 |
+
jQuery(this).html( jQuery(this).attr('data-original-help-text') );
|
1982 |
+
}
|
1983 |
+
} );
|
1984 |
+
|
1985 |
+
/*
|
1986 |
+
* Coor Picker Default
|
1987 |
+
*/
|
1988 |
+
jQuery('.playlistFontColor-show').click(function(e){
|
1989 |
+
e.preventDefault();
|
1990 |
+
jQuery(e.target).hide();
|
1991 |
+
jQuery('.playlistFontColor-hide').show();
|
1992 |
+
|
1993 |
+
jQuery('#playlistFontColor-proxy').show().val(jQuery('#playlistFontColor-proxy').data('previous'));
|
1994 |
+
jQuery('#playlistFontColor').val(jQuery('#playlistFontColor-proxy').data('previous'));
|
1995 |
+
});
|
1996 |
+
|
1997 |
+
jQuery('.playlistFontColor-hide').click(function(e){
|
1998 |
+
e.preventDefault();
|
1999 |
+
jQuery(e.target).hide();
|
2000 |
+
jQuery('.playlistFontColor-show').show();
|
2001 |
+
|
2002 |
+
jQuery('#playlistFontColor-proxy').data('previous',jQuery('#playlistFontColor-proxy').hide().val()).val('');
|
2003 |
+
jQuery('#playlistFontColor').val('');
|
2004 |
+
});
|
2005 |
+
|
2006 |
+
jQuery('#playlistFontColor-proxy').on('change',function(e){
|
2007 |
+
jQuery('#playlistFontColor').val(jQuery(e.target).val());
|
2008 |
+
});
|
2009 |
+
});
|
2010 |
+
//]]>
|
2011 |
+
</script>
|
2012 |
+
|
2013 |
+
<script>
|
2014 |
+
/* TABS */
|
2015 |
+
jQuery(document).ready(function(){
|
2016 |
+
jQuery('#fv_player_js_warning').hide();
|
2017 |
+
|
2018 |
+
var anchor = window.location.hash.substring(1);
|
2019 |
+
if( !anchor || !anchor.match(/tab_/) ) {
|
2020 |
+
anchor = 'postbox-container-tab_basic';
|
2021 |
+
}
|
2022 |
+
|
2023 |
+
jQuery('#fv_flowplayer_admin_tabs .nav-tab').removeClass('nav-tab-active');
|
2024 |
+
jQuery('[href=#'+anchor+']').addClass('nav-tab-active');
|
2025 |
+
jQuery('#dashboard-widgets .postbox-container').hide();
|
2026 |
+
jQuery('#' + anchor).show();
|
2027 |
+
});
|
2028 |
+
jQuery('#fv_flowplayer_admin_tabs a').on('click',function(e){
|
2029 |
+
e.preventDefault();
|
2030 |
+
window.location.hash = e.target.hash;
|
2031 |
+
var anchor = jQuery(this).attr('href').substring(1);
|
2032 |
+
jQuery('#fv_flowplayer_admin_tabs .nav-tab').removeClass('nav-tab-active');
|
2033 |
+
jQuery('[href=#'+anchor+']').addClass('nav-tab-active');
|
2034 |
+
jQuery('#dashboard-widgets .postbox-container').hide();
|
2035 |
+
jQuery('#' + anchor).show();
|
2036 |
+
});
|
2037 |
+
|
2038 |
+
|
2039 |
+
jQuery('a.fv-settings-anchor').on('click',function(e){
|
2040 |
+
var id = jQuery(this).attr('href');
|
2041 |
+
if( id.match(/^#./) ){
|
2042 |
+
var el = jQuery(id);
|
2043 |
+
if(el.length){
|
2044 |
+
var tab = el.parents('.postbox-container').attr('id');
|
2045 |
+
jQuery('#fv_flowplayer_admin_tabs').find('a[href=#'+tab+']').click()
|
2046 |
+
}
|
2047 |
+
}
|
2048 |
+
});
|
2049 |
+
|
2050 |
+
|
2051 |
+
|
2052 |
+
|
2053 |
+
</script>
|
test/integration-7/backend/videointelligenceInstallTest.php
ADDED
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once( dirname(__FILE__).'/../fv-player-unittest-case.php');
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Tests WordPress integration of playlists without any advertisements present
|
7 |
+
* in the HTML markup.
|
8 |
+
*/
|
9 |
+
final class FV_Player_videointelligenceInstallTestCase extends FV_Player_UnitTestCase {
|
10 |
+
|
11 |
+
var $directory = WP_CONTENT_DIR.'/plugins/fv-player-video-intelligence';
|
12 |
+
|
13 |
+
// we need to convince it is showing the FV Player settings screen!
|
14 |
+
public static function wpSetUpBeforeClass() {
|
15 |
+
set_current_screen( 'settings_page_fvplayer' );
|
16 |
+
|
17 |
+
parent::wpSetUpBeforeClass();
|
18 |
+
|
19 |
+
remove_action( 'admin_init', 'wp_admin_headers' );
|
20 |
+
do_action( 'admin_init' );
|
21 |
+
}
|
22 |
+
|
23 |
+
public function setUp() {
|
24 |
+
parent::setUp();
|
25 |
+
|
26 |
+
// add new user and create last saved position metadata for this new user
|
27 |
+
$this->userID = $this->factory->user->create(array(
|
28 |
+
'role' => 'admin'
|
29 |
+
));
|
30 |
+
|
31 |
+
}
|
32 |
+
|
33 |
+
public function testInstall() {
|
34 |
+
|
35 |
+
$this->assertTrue( defined('FV_PLAYER_VI_USER') && defined('FV_PLAYER_VI_PASS') );
|
36 |
+
|
37 |
+
// we need to submit a valid vi Ads login with an admin user capable of installing plugins
|
38 |
+
global $current_user;
|
39 |
+
wp_set_current_user($this->userID);
|
40 |
+
$current_user->add_cap( 'install_plugins' );
|
41 |
+
|
42 |
+
$_POST['vi_login'] = FV_PLAYER_VI_USER;
|
43 |
+
$_POST['vi_pass'] = FV_PLAYER_VI_PASS;
|
44 |
+
$_POST['fv_player_vi_install'] = true;
|
45 |
+
$_REQUEST['nonce_fv_player_vi_install'] = wp_create_nonce('fv_player_vi_install'); // notice the nonce goes into $_REQUEST
|
46 |
+
|
47 |
+
$this->assertFalse( file_exists($this->directory) );
|
48 |
+
|
49 |
+
do_action( 'admin_menu' );
|
50 |
+
|
51 |
+
$this->assertEquals( "FV Player video intelligence extension installed successfully!", get_option('fv_wordpress_flowplayer_deferred_notices') );
|
52 |
+
|
53 |
+
$this->assertFileExists( $this->directory );
|
54 |
+
|
55 |
+
do_action( 'admin_menu' );
|
56 |
+
|
57 |
+
$this->assertEquals( "FV Player video intelligence extension upgraded successfully!", get_option('fv_wordpress_flowplayer_deferred_notices') );
|
58 |
+
}
|
59 |
+
|
60 |
+
public function tearDown() {
|
61 |
+
unset($_POST['vi_login']);
|
62 |
+
unset($_POST['vi_pass']);
|
63 |
+
unset($_POST['fv_player_vi_install']);
|
64 |
+
unset($_REQUEST['nonce_fv_player_vi_install']);
|
65 |
+
|
66 |
+
if( strlen($this->directory) > 10 ) {
|
67 |
+
$this->removeDirectory($this->directory);
|
68 |
+
}
|
69 |
+
}
|
70 |
+
|
71 |
+
private function removeDirectory($path) {
|
72 |
+
$files = glob($path . '/*');
|
73 |
+
foreach ($files as $file) {
|
74 |
+
is_dir($file) ? $this->removeDirectory($file) : unlink($file);
|
75 |
+
}
|
76 |
+
rmdir($path);
|
77 |
+
return;
|
78 |
+
}
|
79 |
+
|
80 |
+
}
|
test/integration-7/bootstrap.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Bootstrap the plugin unit testing environment.
|
4 |
+
*
|
5 |
+
* Edit 'active_plugins' setting below to point to your main plugin file.
|
6 |
+
*
|
7 |
+
* @package wordpress-plugin-tests
|
8 |
+
*/
|
9 |
+
|
10 |
+
/**
|
11 |
+
* PLEASE NOTE - before this can be used, please checkout the latest WP TestSuite
|
12 |
+
* by using "svn checkout http://develop.svn.wordpress.org/trunk/ testSuite" and rename
|
13 |
+
* files "wp-config-sample.php" and "wp-tests-config-sample.php" by removing the "-sample"
|
14 |
+
* part from it. Then update those files to contain an EMPTY database and login information,
|
15 |
+
* as these tests will create a NEW WP INSTALLATION AND WIPE OUT EVERYTHING THERE IS IN THE DB.
|
16 |
+
*
|
17 |
+
* Also, please make sure to update the value of "WP_PHP_BINARY" constant to point to your PHP binary.
|
18 |
+
*/
|
19 |
+
|
20 |
+
// let whoever is listening know we're in test mode
|
21 |
+
define('PHPUnitTestMode', true);
|
22 |
+
|
23 |
+
// Activates this plugin in WordPress so it can be tested.
|
24 |
+
$GLOBALS['wp_tests_options'] = array(
|
25 |
+
'active_plugins' => array(
|
26 |
+
'fv-wordpress-flowplayer/flowplayer.php',
|
27 |
+
)
|
28 |
+
);
|
29 |
+
|
30 |
+
// If the develop repo location is defined (as WP_DEVELOP_DIR), use that
|
31 |
+
// location. Otherwise, we'll just assume that this plugin is installed in a
|
32 |
+
// WordPress develop SVN checkout.
|
33 |
+
|
34 |
+
if( false !== getenv( 'WP_DEVELOP_DIR' ) ) {
|
35 |
+
require getenv( 'WP_DEVELOP_DIR' ) . '/tests/phpunit/includes/bootstrap.php';
|
36 |
+
} else {
|
37 |
+
require '../testSuite/tests/phpunit/includes/bootstrap.php';
|
38 |
+
}
|
test/integration-7/frontend/1-shortcodesTest.php
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once( dirname(__FILE__).'/../fv-player-unittest-case.php');
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Tests WordPress integration of playlists without any advertisements present
|
7 |
+
* in the HTML markup.
|
8 |
+
*/
|
9 |
+
final class FV_Player_ShortcodeTestCase extends FV_Player_UnitTestCase {
|
10 |
+
|
11 |
+
public function setUp() {
|
12 |
+
parent::setUp();
|
13 |
+
|
14 |
+
// create a post with playlist shortcode
|
15 |
+
$this->post_id_SimpleShortcode = $this->factory->post->create( array(
|
16 |
+
'post_title' => 'Simple Shortcode',
|
17 |
+
'post_content' => '[fvplayer src="https://cdn.site.com/video.mp4"]'
|
18 |
+
) );
|
19 |
+
|
20 |
+
/*global $fv_fp;
|
21 |
+
|
22 |
+
include_once "../../../fv-wordpress-flowplayer/models/flowplayer.php";
|
23 |
+
include_once "../../../fv-wordpress-flowplayer/models/flowplayer-frontend.php";
|
24 |
+
$fv_fp = new flowplayer_frontend();
|
25 |
+
|
26 |
+
include_once "../../beta/fv-player-pro.class.php";
|
27 |
+
$this->fvPlayerProInstance = new FV_Player_Pro();*/
|
28 |
+
}
|
29 |
+
|
30 |
+
public function testSimpleShortcode() {
|
31 |
+
global $post;
|
32 |
+
$post = get_post( $this->post_id_SimpleShortcode );
|
33 |
+
$post->ID = 1234;
|
34 |
+
|
35 |
+
remove_action('wp_head', 'wp_generator');
|
36 |
+
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
|
37 |
+
remove_action( 'wp_print_styles', 'print_emoji_styles' );
|
38 |
+
add_filter( 'wp_resource_hints', '__return_empty_array' );
|
39 |
+
|
40 |
+
wp_deregister_script( 'wp-embed' );
|
41 |
+
|
42 |
+
// note that you can only use wp_head() or wp_footer() once!
|
43 |
+
ob_start();
|
44 |
+
wp_head();
|
45 |
+
echo apply_filters( 'the_content', $post->post_content );
|
46 |
+
wp_footer();
|
47 |
+
$output = ob_get_clean();
|
48 |
+
|
49 |
+
$this->assertEquals( $this->fix_newlines(file_get_contents(dirname(__FILE__).'/testSimpleShortcode.html')), $this->fix_newlines($output) );
|
50 |
+
}
|
51 |
+
|
52 |
+
}
|
test/integration-7/frontend/endActionsTest.php
ADDED
@@ -0,0 +1,164 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once( dirname(__FILE__).'/../fv-player-unittest-case.php');
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Tests WordPress integration of playlists without any advertisements present
|
7 |
+
* in the HTML markup.
|
8 |
+
*/
|
9 |
+
final class FV_Player_EndActionsTest extends FV_Player_UnitTestCase {
|
10 |
+
|
11 |
+
public function setUp() {
|
12 |
+
parent::setUp();
|
13 |
+
|
14 |
+
// create a post with playlist shortcode
|
15 |
+
$this->post_id_testEndActions= $this->factory->post->create( array(
|
16 |
+
'post_title' => 'End Action Test',
|
17 |
+
'post_content' => '[fvplayer src="https://cdn.site.com/video.mp4"]'
|
18 |
+
) );
|
19 |
+
|
20 |
+
// if we don't load something with a [fvplayer] shortcode in it it won't know to load CSS in header!
|
21 |
+
global $post;
|
22 |
+
$post = get_post( $this->post_id_testEndActions );
|
23 |
+
$post->ID = 1234;
|
24 |
+
|
25 |
+
// we remove header stuff which we don't want to test
|
26 |
+
remove_action('wp_head', 'wp_generator');
|
27 |
+
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
|
28 |
+
remove_action( 'wp_print_styles', 'print_emoji_styles' );
|
29 |
+
add_filter( 'wp_resource_hints', '__return_empty_array' );
|
30 |
+
wp_deregister_script( 'wp-embed' );
|
31 |
+
|
32 |
+
// the test data
|
33 |
+
update_option('fv_player_popups', array( 1 => array (
|
34 |
+
'name' => '',
|
35 |
+
'html' => '<a href="https://foliovision.com/2018/07/panamax"><img src="https://cdn.foliovision.com/images/2018/07/PanamaX-5-400x239.jpg" class="alignleft post-image entry-image lazyloaded " alt="PanamaX" itemprop="image" sizes="(max-width: 400px) 100vw, 400px" srcset="https://cdn.foliovision.com/images/2018/07/PanamaX-5-400x239.jpg 400w, https://cdn.foliovision.com/images/2018/07/PanamaX-5.jpg 1128w" width="400" height="239"></a>',
|
36 |
+
'css' => '',
|
37 |
+
'disabled' => '0',
|
38 |
+
) ) );
|
39 |
+
}
|
40 |
+
|
41 |
+
public function testEndActionsEmailCollection() {
|
42 |
+
|
43 |
+
// triggering the default email list creation
|
44 |
+
global $FV_Player_Email_Subscription;
|
45 |
+
$FV_Player_Email_Subscription->init_options();
|
46 |
+
|
47 |
+
$output = apply_filters( 'the_content', '[fvplayer src="https://cdn.site.com/video.mp4" share="no" embed="false" popup="email-1"]' );
|
48 |
+
|
49 |
+
$sample = <<< HTML
|
50 |
+
<div id="wpfp_2534ca47632437a90737cb5c0e27b461" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video.mp4","type":"video\/mp4"}]}" class="flowplayer no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy" data-embed="false" style="max-width: 640px; max-height: 360px; " data-ratio="0.5625">
|
51 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
52 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
53 |
+
</div>
|
54 |
+
HTML;
|
55 |
+
|
56 |
+
$this->assertEquals( $this->fix_newlines($sample), $this->fix_newlines($output) );
|
57 |
+
|
58 |
+
// is the email popup there?
|
59 |
+
wp_deregister_script('flowplayer');
|
60 |
+
flowplayer_prepare_scripts();
|
61 |
+
|
62 |
+
global $wp_scripts;
|
63 |
+
$this->assertTrue( stripos( $this->fix_newlines($wp_scripts->registered['flowplayer']->extra['data']), $this->fix_newlines('var fv_flowplayer_popup = {"wpfp_282c498132552aaa754164072eaaa0d0":{"html":"<div class=\"fv_player_popup fv_player_popup-1 wpfp_custom_popup_content\"><h3>Subscribe to list one<\/h3><p>Two good reasons to subscribe right now<\/p><form class=\"mailchimp-form mailchimp-form-2\"><input type=\"hidden\" name=\"list\" value=\"1\" \/><input type=\"email\" placeholder=\"Email Address\" name=\"email\"\/><input type=\"text\" placeholder=\"First Name\" name=\"first_name\" required\/><input type=\"submit\" value=\"Subscribe\"\/><\/form><\/div>"}}') ) !== false );
|
64 |
+
|
65 |
+
global $fv_fp;
|
66 |
+
$fv_fp->aPopups = array();
|
67 |
+
}
|
68 |
+
|
69 |
+
public function testEndActionsLoop() {
|
70 |
+
|
71 |
+
$output = apply_filters( 'the_content', '[fvplayer src="https://cdn.site.com/video.mp4" share="no" embed="false" loop="true"]' );
|
72 |
+
|
73 |
+
$sample = <<< HTML
|
74 |
+
<div id="wpfp_2534ca47632437a90737cb5c0e27b461" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video.mp4","type":"video\/mp4"}]}" class="flowplayer no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy" data-embed="false" style="max-width: 640px; max-height: 360px; " data-ratio="0.5625" data-fv_loop="1">
|
75 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
76 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
77 |
+
</div>
|
78 |
+
HTML;
|
79 |
+
|
80 |
+
$this->assertEquals( $this->fix_newlines($sample), $this->fix_newlines($output) );
|
81 |
+
}
|
82 |
+
|
83 |
+
public function testEndActionsPopupNumber() {
|
84 |
+
|
85 |
+
$output = apply_filters( 'the_content', '[fvplayer src="https://cdn.site.com/video.mp4" popup="1" share="no" embed="false"]' );
|
86 |
+
|
87 |
+
$sample = <<< HTML
|
88 |
+
<div id="wpfp_2534ca47632437a90737cb5c0e27b461" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video.mp4","type":"video\/mp4"}]}" class="flowplayer no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy" data-embed="false" style="max-width: 640px; max-height: 360px; " data-ratio="0.5625">
|
89 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
90 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
91 |
+
</div>
|
92 |
+
HTML;
|
93 |
+
|
94 |
+
$this->assertEquals( $this->fix_newlines($sample), $this->fix_newlines($output) );
|
95 |
+
|
96 |
+
// are the popups ready?
|
97 |
+
wp_deregister_script('flowplayer');
|
98 |
+
flowplayer_prepare_scripts();
|
99 |
+
|
100 |
+
global $wp_scripts;
|
101 |
+
$this->assertTrue( stripos( $this->fix_newlines($wp_scripts->registered['flowplayer']->extra['data']), $this->fix_newlines('var fv_flowplayer_popup = {"wpfp_40dd5c9f6426b9d96be06d43e9224af8":{"html":"<div class=\"fv_player_popup fv_player_popup-1 wpfp_custom_popup_content\"><a href=\"https:\/\/foliovision.com\/2018\/07\/panamax\"><img src=\"https:\/\/cdn.foliovision.com\/images\/2018\/07\/PanamaX-5-400x239.jpg\" class=\"alignleft post-image entry-image lazyloaded \" alt=\"PanamaX\" itemprop=\"image\" sizes=\"(max-width: 400px) 100vw, 400px\" srcset=\"https:\/\/cdn.foliovision.com\/images\/2018\/07\/PanamaX-5-400x239.jpg 400w, https:\/\/cdn.foliovision.com\/images\/2018\/07\/PanamaX-5.jpg 1128w\" width=\"400\" height=\"239\"><\/a><\/div>"}};') ) !== false );
|
102 |
+
|
103 |
+
global $fv_fp;
|
104 |
+
$fv_fp->aPopups = array();
|
105 |
+
}
|
106 |
+
|
107 |
+
public function testEndActionsPopupHTML() {
|
108 |
+
|
109 |
+
$output = apply_filters( 'the_content', '[fvplayer src="https://cdn.site.com/video.mp4" share="no" embed="false" popup="'.addslashes('<a href="https://foliovision.com/2018/07/panamax"><img src="https://cdn.foliovision.com/images/2018/07/PanamaX-5-400x239.jpg" class="alignleft post-image entry-image lazyloaded " alt="PanamaX" itemprop="image" sizes="(max-width: 400px) 100vw, 400px" srcset="https://cdn.foliovision.com/images/2018/07/PanamaX-5-400x239.jpg 400w, https://cdn.foliovision.com/images/2018/07/PanamaX-5.jpg 1128w" width="400" height="239"></a>').'"]' );
|
110 |
+
|
111 |
+
$sample = <<< HTML
|
112 |
+
<div id="wpfp_2534ca47632437a90737cb5c0e27b461" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video.mp4","type":"video\/mp4"}]}" class="flowplayer no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy" data-embed="false" style="max-width: 640px; max-height: 360px; " data-ratio="0.5625">
|
113 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
114 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
115 |
+
</div>
|
116 |
+
HTML;
|
117 |
+
|
118 |
+
$this->assertEquals( $this->fix_newlines($sample), $this->fix_newlines($output) );
|
119 |
+
|
120 |
+
// are the popups ready?
|
121 |
+
wp_deregister_script('flowplayer');
|
122 |
+
flowplayer_prepare_scripts();
|
123 |
+
|
124 |
+
global $wp_scripts;
|
125 |
+
$this->assertTrue( stripos( $this->fix_newlines($wp_scripts->registered['flowplayer']->extra['data']), $this->fix_newlines('var fv_flowplayer_popup = {"wpfp_40dd5c9f6426b9d96be06d43e9224af8":{"html":"<div class=\"fv_player_popup fv_player_popup-1 wpfp_custom_popup_content\"><a href=\"https:\/\/foliovision.com\/2018\/07\/panamax\"><img src=\"https:\/\/cdn.foliovision.com\/images\/2018\/07\/PanamaX-5-400x239.jpg\" class=\"alignleft post-image entry-image lazyloaded \" alt=\"PanamaX\" itemprop=\"image\" sizes=\"(max-width: 400px) 100vw, 400px\" srcset=\"https:\/\/cdn.foliovision.com\/images\/2018\/07\/PanamaX-5-400x239.jpg 400w, https:\/\/cdn.foliovision.com\/images\/2018\/07\/PanamaX-5.jpg 1128w\" width=\"400\" height=\"239\"><\/a><\/div>"}};') ) !== false );
|
126 |
+
|
127 |
+
global $fv_fp;
|
128 |
+
$fv_fp->aPopups = array();
|
129 |
+
}
|
130 |
+
|
131 |
+
public function testEndActionsRedirect() {
|
132 |
+
|
133 |
+
$output = apply_filters( 'the_content', '[fvplayer src="https://cdn.site.com/video.mp4" share="no" embed="false" redirect="https://foliovision.com"]' );
|
134 |
+
|
135 |
+
$sample = <<< HTML
|
136 |
+
<div id="wpfp_2534ca47632437a90737cb5c0e27b461" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video.mp4","type":"video\/mp4"}]}" class="flowplayer no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy" data-embed="false" style="max-width: 640px; max-height: 360px; " data-ratio="0.5625" data-fv_redirect="https://foliovision.com">
|
137 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
138 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
139 |
+
</div>
|
140 |
+
HTML;
|
141 |
+
|
142 |
+
$this->assertEquals( $this->fix_newlines($sample), $this->fix_newlines($output) );
|
143 |
+
}
|
144 |
+
|
145 |
+
public function testEndActionsSplashEnd() {
|
146 |
+
|
147 |
+
$output = apply_filters( 'the_content', '[fvplayer src="https://cdn.site.com/video.mp4" splash="https://cdn.site.com/video.jpg" share="no" embed="false" splashend="show"]' );
|
148 |
+
|
149 |
+
$sample = <<< HTML
|
150 |
+
<div id="wpfp_2534ca47632437a90737cb5c0e27b461" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video.mp4","type":"video\/mp4"}]}" class="flowplayer no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy" data-embed="false" style="max-width: 640px; max-height: 360px; background-image: url(https://cdn.site.com/video.jpg);" data-ratio="0.5625">
|
151 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
152 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
153 |
+
<div id="wpfp_ebf1dd081f973cd9a2b19499445705f2_custom_background" class="wpfp_custom_background" style="position: absolute; background: url('https://cdn.site.com/video.jpg') no-repeat center center; background-size: contain; width: 100%; height: 100%; z-index: 1;"></div>
|
154 |
+
</div>
|
155 |
+
HTML;
|
156 |
+
|
157 |
+
$this->assertEquals( $this->fix_newlines($sample), $this->fix_newlines($output) );
|
158 |
+
}
|
159 |
+
|
160 |
+
public function tearDown() {
|
161 |
+
delete_option('fv_player_popups');
|
162 |
+
}
|
163 |
+
|
164 |
+
}
|
test/integration-7/frontend/shortcodesLightboxTest.php
ADDED
@@ -0,0 +1,168 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once( dirname(__FILE__).'/../fv-player-unittest-case.php');
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Tests WordPress integration of playlists without any advertisements present
|
7 |
+
* in the HTML markup.
|
8 |
+
*/
|
9 |
+
final class FV_Player_ShortcodeLightboxTestCase extends FV_Player_UnitTestCase {
|
10 |
+
|
11 |
+
var $shortcode_body = 'src="https://cdn.site.com/video1.mp4" splash="https://cdn.site.com/video1.jpg" playlist="https://cdn.site.com/video2.mp4,https://cdn.site.com/video2.jpg;https://cdn.site.com/video3.mp4,https://cdn.site.com/video3.jpg" caption="Video 1;Video 2;Video 3" share="no" embed="false"';
|
12 |
+
|
13 |
+
public function testSimple() {
|
14 |
+
|
15 |
+
$output = apply_filters( 'the_content', '[fvplayer src="https://cdn.site.com/video1.mp4" splash="https://cdn.site.com/video1.jpg" lightbox="true" share="no" embed="false"]' );
|
16 |
+
|
17 |
+
$sample = <<< HTML
|
18 |
+
<div data-fancybox='gallery' data-options='{"touch":false,"thumb":"https:\/\/cdn.site.com\/video1.jpg"}' id='fv_flowplayer_5d2ac904592b20b5bf87a2a85df7ace7_lightbox_starter' href='#wpfp_5d2ac904592b20b5bf87a2a85df7ace7' class='flowplayer lightbox-starter is-splash no-svg is-paused skin-slim fp-slim fp-edgy' style="max-width: 640px; max-height: 360px; background-image: url('https://cdn.site.com/video1.jpg')" data-ratio="0.5625"><div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div><div class="fp-ratio" style="padding-top: 56.25%"></div></div>
|
19 |
+
<div class='fv_player_lightbox_hidden' style='display: none'>
|
20 |
+
<div id="some-test-hash" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video1.mp4","type":"video\/mp4"}]}" class="flowplayer lightboxed no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy" data-embed="false" style="max-width: 640px; max-height: 360px; background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
21 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
22 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
23 |
+
</div>
|
24 |
+
</div>
|
25 |
+
HTML;
|
26 |
+
$this->assertEquals( $this->fix_newlines($sample), $this->fix_newlines($output) );
|
27 |
+
}
|
28 |
+
|
29 |
+
|
30 |
+
public function testCaption() {
|
31 |
+
$output = apply_filters( 'the_content', '[fvplayer src="https://cdn.site.com/video1.mp4" splash="https://cdn.site.com/video1.jpg" lightbox="true;Video 1" share="no" embed="false"]' );
|
32 |
+
|
33 |
+
$sample = <<< HTML
|
34 |
+
<div data-fancybox='gallery' data-options='{"touch":false,"thumb":"https:\/\/cdn.site.com\/video1.jpg"}' id='fv_flowplayer_5d2ac904592b20b5bf87a2a85df7ace7_lightbox_starter' title='Video 1' href='#wpfp_5d2ac904592b20b5bf87a2a85df7ace7' class='flowplayer lightbox-starter is-splash no-svg is-paused skin-slim fp-slim fp-edgy' style="max-width: 640px; max-height: 360px; background-image: url('https://cdn.site.com/video1.jpg')" data-ratio="0.5625"><div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div><div class="fp-ratio" style="padding-top: 56.25%"></div></div>
|
35 |
+
<div class='fv_player_lightbox_hidden' style='display: none'>
|
36 |
+
<div id="some-test-hash" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video1.mp4","type":"video\/mp4"}]}" class="flowplayer lightboxed no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy" data-embed="false" style="max-width: 640px; max-height: 360px; background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
37 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
38 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
39 |
+
</div>
|
40 |
+
</div>
|
41 |
+
HTML;
|
42 |
+
$this->assertEquals( $this->fix_newlines($sample), $this->fix_newlines($output) );
|
43 |
+
}
|
44 |
+
|
45 |
+
|
46 |
+
public function testCaptionAndDimensions() {
|
47 |
+
$output = apply_filters( 'the_content', '[fvplayer src="https://cdn.site.com/video1.mp4" splash="https://cdn.site.com/video1.jpg" lightbox="true;320;240;Video 1" share="no" embed="false"]' );
|
48 |
+
$sample = <<< HTML
|
49 |
+
<div data-fancybox='gallery' data-options='{"touch":false,"thumb":"https:\/\/cdn.site.com\/video1.jpg"}' id='fv_flowplayer_f1f51bb87ed9702bd91ac63990cee57b_lightbox_starter' title='Video 1' href='#wpfp_f1f51bb87ed9702bd91ac63990cee57b' class='flowplayer lightbox-starter is-splash no-svg is-paused skin-slim fp-slim fp-edgy' style="max-width: 320px; max-height: 240px; background-image: url('https://cdn.site.com/video1.jpg')" data-ratio="0.75"><div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div><div class="fp-ratio" style="padding-top: 75%"></div></div>
|
50 |
+
<div class='fv_player_lightbox_hidden' style='display: none'>
|
51 |
+
<div id="some-test-hash" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video1.mp4","type":"video\/mp4"}]}" class="flowplayer lightboxed no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy" data-embed="false" style="max-width: 640px; max-height: 360px; background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
52 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
53 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
54 |
+
</div>
|
55 |
+
</div>
|
56 |
+
HTML;
|
57 |
+
$this->assertEquals( $this->fix_newlines($sample), $this->fix_newlines($output) );
|
58 |
+
}
|
59 |
+
|
60 |
+
|
61 |
+
public function testText() {
|
62 |
+
$output = apply_filters( 'the_content', '[fvplayer src="https://cdn.site.com/video1.mp4" splash="https://cdn.site.com/video1.jpg" caption="Video 1" lightbox="true;text" share="no" embed="false"]' );
|
63 |
+
$sample = <<< HTML
|
64 |
+
<a data-fancybox='gallery' data-options='{"touch":false}' id='fv_flowplayer_2f9724515033ace3d660707b426f527c_lightbox_starter' title='Video 1' href="#" data-src='#wpfp_2f9724515033ace3d660707b426f527c'>Video 1</a>
|
65 |
+
HTML;
|
66 |
+
$this->assertEquals( $this->fix_newlines($sample), $this->fix_newlines($output) );
|
67 |
+
|
68 |
+
|
69 |
+
ob_start();
|
70 |
+
do_action('wp_footer');
|
71 |
+
$footer = ob_get_clean();
|
72 |
+
|
73 |
+
$sample = <<< HTML
|
74 |
+
<div style='display: none'>
|
75 |
+
<div id="wpfp_11361d379334c11f2eaa75f6aacd8386" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video1.mp4","type":"video\/mp4"}]}" class="flowplayer lightboxed no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy has-caption" data-embed="false" style="max-width: 640px; max-height: 360px; background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
76 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
77 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
78 |
+
|
79 |
+
</div>
|
80 |
+
<p class='fp-caption'>Video 1</p></div>
|
81 |
+
<!-- lightboxed players -->
|
82 |
+
HTML;
|
83 |
+
|
84 |
+
$this->assertTrue( stripos( $this->fix_newlines($footer),$this->fix_newlines($sample) ) !== false ); // is the lightboxed players in the footer?
|
85 |
+
|
86 |
+
global $FV_Player_lightbox;
|
87 |
+
$this->assertTrue( $FV_Player_lightbox->bLoad ); // is the flag to load lightbox JS set?
|
88 |
+
}
|
89 |
+
|
90 |
+
|
91 |
+
public function testPlaylist() {
|
92 |
+
$output = apply_filters( 'the_content', '[fvplayer '.$this->shortcode_body.' lightbox="true"]' );
|
93 |
+
|
94 |
+
$sample = <<< HTML
|
95 |
+
<div data-fancybox='gallery' data-options='{"touch":false,"thumb":"https:\/\/cdn.site.com\/video1.jpg"}' id='fv_flowplayer_5d2ac904592b20b5bf87a2a85df7ace7_lightbox_starter' href='#wpfp_5d2ac904592b20b5bf87a2a85df7ace7' class='flowplayer lightbox-starter is-splash no-svg is-paused skin-slim fp-slim fp-edgy' style="max-width: 640px; max-height: 360px; background-image: url('https://cdn.site.com/video1.jpg')" data-ratio="0.5625"><div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div><div class="fp-ratio" style="padding-top: 56.25%"></div></div>
|
96 |
+
<div class='fv_player_lightbox_hidden' style='display: none'>
|
97 |
+
<div id="wpfp_5d2ac904592b20b5bf87a2a85df7ace7" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video1.mp4","type":"video\/mp4"}]}" class="flowplayer lightboxed no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy has-caption" data-embed="false" style="max-width: 640px; max-height: 360px; background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
98 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
99 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
100 |
+
|
101 |
+
</div>
|
102 |
+
<p class='fp-caption'>Video 1</p></div><div class='fp-playlist-external fv-playlist-design-2017 fp-playlist-horizontal fp-playlist-has-captions'><a id='fv_flowplayer_lightbox_placeholder' href='#' onclick='document.getElementById("fv_flowplayer_5d2ac904592b20b5bf87a2a85df7ace7_lightbox_starter").click(); return false'><div style="background-image: url('https://cdn.site.com/video1.jpg')"></div><h4><span>Video 1</span></h4></a><a data-fancybox='gallery' data-options='{"touch":false,"thumb":"https:\/\/cdn.site.com\/video2.jpg"}' id='fv_flowplayer_lightbox_starter' href='#' data-src='#wpfp_e802b17ebbace952275cd50709bf549b'><div style="background-image: url('https://cdn.site.com/video2.jpg')"></div><h4><span>Video 2</span></h4></a><a data-fancybox='gallery' data-options='{"touch":false,"thumb":"https:\/\/cdn.site.com\/video3.jpg"}' id='fv_flowplayer_lightbox_starter' href='#' data-src='#wpfp_2ffbd4e84c1ecf2e00db5edf98996de3'><div style="background-image: url('https://cdn.site.com/video3.jpg')"></div><h4><span>Video 3</span></h4></a></div><div class='fv_player_lightbox_hidden' style='display: none'>
|
103 |
+
<div id="wpfp_e802b17ebbace952275cd50709bf549b" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video2.mp4","type":"video\/mp4"}]}" class="flowplayer lightboxed no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy has-caption" data-embed="false" style="max-width: 640px; max-height: 360px; background-image: url(https://cdn.site.com/video2.jpg);" data-ratio="0.5625">
|
104 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
105 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
106 |
+
|
107 |
+
</div>
|
108 |
+
<p class='fp-caption'>Video 2</p></div><div class='fv_player_lightbox_hidden' style='display: none'>
|
109 |
+
<div id="wpfp_2ffbd4e84c1ecf2e00db5edf98996de3" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video3.mp4","type":"video\/mp4"}]}" class="flowplayer lightboxed no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy has-caption" data-embed="false" style="max-width: 640px; max-height: 360px; background-image: url(https://cdn.site.com/video3.jpg);" data-ratio="0.5625">
|
110 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
111 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
112 |
+
|
113 |
+
</div>
|
114 |
+
<p class='fp-caption'>Video 3</p></div>
|
115 |
+
HTML;
|
116 |
+
|
117 |
+
$this->assertEquals( $this->fix_newlines($sample), $this->fix_newlines($output) );
|
118 |
+
|
119 |
+
// setting liststyle shouldn't affect anything!
|
120 |
+
$output = apply_filters( 'the_content', '[fvplayer '.$this->shortcode_body.' lightbox="true" liststyle="slider"]' );
|
121 |
+
$this->assertEquals( $this->fix_newlines($sample), $this->fix_newlines($output) );
|
122 |
+
}
|
123 |
+
|
124 |
+
|
125 |
+
public function testPlaylistText() {
|
126 |
+
$output = apply_filters( 'the_content', '[fvplayer '.$this->shortcode_body.' lightbox="true;text"]' );
|
127 |
+
$sample = <<< HTML
|
128 |
+
<ul><li><a data-fancybox='gallery' data-options='{"touch":false}' id='fv_flowplayer_b721d6e309a0b856f27cc5ffe3f64c19_lightbox_starter' title='Video 1' href="#" data-src='#wpfp_b721d6e309a0b856f27cc5ffe3f64c19'>Video 1</a></li><li><a data-fancybox='gallery' data-options='{"touch":false}' id='fv_flowplayer_lightbox_starter' title='Video 2' href='#' data-src='#wpfp_f7e1bf7ee8d12a2bf3bc4f148cdd718c'>Video 2</a></li><li><a data-fancybox='gallery' data-options='{"touch":false}' id='fv_flowplayer_lightbox_starter' title='Video 3' href='#' data-src='#wpfp_d0ecb746d43cfeca15296bd46c0dee3c'>Video 3</a></li></div></ul>
|
129 |
+
HTML;
|
130 |
+
$this->assertEquals( $this->fix_newlines($sample), $this->fix_newlines($output) );
|
131 |
+
|
132 |
+
|
133 |
+
ob_start();
|
134 |
+
do_action('wp_footer');
|
135 |
+
$footer = ob_get_clean();
|
136 |
+
|
137 |
+
$sample = <<< HTML
|
138 |
+
<div style='display: none'>
|
139 |
+
<div id="wpfp_41dd59eae18defa2521bb63946885f69" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video1.mp4","type":"video\/mp4"}]}" class="flowplayer lightboxed no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy has-caption" data-embed="false" style="max-width: 640px; max-height: 360px; background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
140 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
141 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
142 |
+
|
143 |
+
</div>
|
144 |
+
<p class='fp-caption'>Video 1</p></div>
|
145 |
+
<div style='display: none'>
|
146 |
+
<div id="wpfp_c189727d02321b2388ebc844c1fdc0c7" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video2.mp4","type":"video\/mp4"}]}" class="flowplayer lightboxed no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy has-caption" data-embed="false" style="max-width: 640px; max-height: 360px; background-image: url(https://cdn.site.com/video2.jpg);" data-ratio="0.5625">
|
147 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
148 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
149 |
+
|
150 |
+
</div>
|
151 |
+
<p class='fp-caption'>Video 2</p></div>
|
152 |
+
<div style='display: none'>
|
153 |
+
<div id="wpfp_51771d567d4dd88882f65b4b89fc81d6" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video3.mp4","type":"video\/mp4"}]}" class="flowplayer lightboxed no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy has-caption" data-embed="false" style="max-width: 640px; max-height: 360px; background-image: url(https://cdn.site.com/video3.jpg);" data-ratio="0.5625">
|
154 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
155 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
156 |
+
|
157 |
+
</div>
|
158 |
+
<p class='fp-caption'>Video 3</p></div>
|
159 |
+
<!-- lightboxed players -->
|
160 |
+
HTML;
|
161 |
+
|
162 |
+
$this->assertTrue( stripos( $this->fix_newlines($footer),$this->fix_newlines($sample) ) !== false ); // are the lightboxed players in the footer?
|
163 |
+
|
164 |
+
global $FV_Player_lightbox;
|
165 |
+
$this->assertTrue( $FV_Player_lightbox->bLoad ); // is the flag to load lightbox JS set?
|
166 |
+
}
|
167 |
+
|
168 |
+
}
|
test/integration-7/frontend/shortcodesPlaylistTest.php
ADDED
@@ -0,0 +1,156 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once( dirname(__FILE__).'/../fv-player-unittest-case.php');
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Tests WordPress integration of playlists without any advertisements present
|
7 |
+
* in the HTML markup.
|
8 |
+
*/
|
9 |
+
final class FV_Player_ShortcodePlaylistTestCase extends FV_Player_UnitTestCase {
|
10 |
+
|
11 |
+
public function setUp() {
|
12 |
+
parent::setUp();
|
13 |
+
|
14 |
+
$shortcode_body = 'src="https://cdn.site.com/video1.mp4" splash="https://cdn.site.com/video1.jpg" playlist="https://cdn.site.com/video2.mp4,https://cdn.site.com/video2.jpg;https://cdn.site.com/video3.mp4,https://cdn.site.com/video3.jpg" caption="Video 1;Video 2; Video 3" share="no" embed="false"';
|
15 |
+
|
16 |
+
// create a post with playlist shortcode
|
17 |
+
$this->playlist_default = $this->factory->post->create( array(
|
18 |
+
'post_content' => '[fvplayer '.$shortcode_body.']'
|
19 |
+
) );
|
20 |
+
|
21 |
+
$this->playlist_vertical = $this->factory->post->create( array(
|
22 |
+
'post_content' => '[fvplayer '.$shortcode_body.' liststyle="vertical"]'
|
23 |
+
) );
|
24 |
+
|
25 |
+
$this->playlist_tabs = $this->factory->post->create( array(
|
26 |
+
'post_content' => '[fvplayer '.$shortcode_body.' liststyle="tabs"]'
|
27 |
+
) );
|
28 |
+
|
29 |
+
$this->playlist_prevnext = $this->factory->post->create( array(
|
30 |
+
'post_content' => '[fvplayer '.$shortcode_body.' liststyle="prevnext"]'
|
31 |
+
) );
|
32 |
+
|
33 |
+
$this->playlist_slider = $this->factory->post->create( array(
|
34 |
+
'post_content' => '[fvplayer '.$shortcode_body.' liststyle="slider"]'
|
35 |
+
) );
|
36 |
+
|
37 |
+
}
|
38 |
+
|
39 |
+
public function testPlaylistStyleShortcode() {
|
40 |
+
global $post;
|
41 |
+
|
42 |
+
$post = get_post( $this->playlist_default );
|
43 |
+
$output = apply_filters( 'the_content', $post->post_content );
|
44 |
+
|
45 |
+
$sample = <<< HTML
|
46 |
+
<div id="wpfp_10ecd1d835d0db002906d6666d27a916" class="flowplayer no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy" data-embed="false" style="max-width: 100%; background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
47 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
48 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
49 |
+
</div>
|
50 |
+
<div class="fp-playlist-external fv-playlist-design-2017 fp-playlist-horizontal fp-playlist-has-captions" rel="wpfp_10ecd1d835d0db002906d6666d27a916">
|
51 |
+
<a href='#' onclick='return false' data-item='{"sources":[{"src":"https:\/\/cdn.site.com\/video1.mp4","type":"video\/mp4"}]}'><div style='background-image: url("https://cdn.site.com/video1.jpg")'></div><h4><span>Video 1</span></h4></a>
|
52 |
+
<a href='#' onclick='return false' data-item='{"sources":[{"src":"https:\/\/cdn.site.com\/video2.mp4","type":"video\/mp4"}]}'><div style='background-image: url("https://cdn.site.com/video2.jpg")'></div><h4><span>Video 2</span></h4></a>
|
53 |
+
<a href='#' onclick='return false' data-item='{"sources":[{"src":"https:\/\/cdn.site.com\/video3.mp4","type":"video\/mp4"}]}'><div style='background-image: url("https://cdn.site.com/video3.jpg")'></div><h4><span> Video 3</span></h4></a>
|
54 |
+
</div>
|
55 |
+
HTML;
|
56 |
+
|
57 |
+
$this->assertEquals( $this->fix_newlines($sample), $this->fix_newlines($output) );
|
58 |
+
|
59 |
+
|
60 |
+
$post = get_post( $this->playlist_vertical );
|
61 |
+
$output = apply_filters( 'the_content', $post->post_content );
|
62 |
+
|
63 |
+
$sample = <<< HTML
|
64 |
+
<div class="fp-playlist-vertical-wrapper"><div id="wpfp_10ecd1d835d0db002906d6666d27a916" class="flowplayer no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy" data-embed="false" style="max-width: 100%; background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
65 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
66 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
67 |
+
</div>
|
68 |
+
<div class="fp-playlist-external fv-playlist-design-2017 fp-playlist-vertical fp-playlist-has-captions" rel="wpfp_10ecd1d835d0db002906d6666d27a916">
|
69 |
+
<a href='#' onclick='return false' data-item='{"sources":[{"src":"https:\/\/cdn.site.com\/video1.mp4","type":"video\/mp4"}]}'><div style='background-image: url("https://cdn.site.com/video1.jpg")'></div><h4><span>Video 1</span></h4></a>
|
70 |
+
<a href='#' onclick='return false' data-item='{"sources":[{"src":"https:\/\/cdn.site.com\/video2.mp4","type":"video\/mp4"}]}'><div style='background-image: url("https://cdn.site.com/video2.jpg")'></div><h4><span>Video 2</span></h4></a>
|
71 |
+
<a href='#' onclick='return false' data-item='{"sources":[{"src":"https:\/\/cdn.site.com\/video3.mp4","type":"video\/mp4"}]}'><div style='background-image: url("https://cdn.site.com/video3.jpg")'></div><h4><span> Video 3</span></h4></a>
|
72 |
+
</div>
|
73 |
+
</div>
|
74 |
+
HTML;
|
75 |
+
|
76 |
+
$this->assertEquals( $this->fix_newlines($sample), $this->fix_newlines($output) );
|
77 |
+
|
78 |
+
|
79 |
+
$post = get_post( $this->playlist_prevnext );
|
80 |
+
$output = apply_filters( 'the_content', $post->post_content );
|
81 |
+
|
82 |
+
$sample = <<< HTML
|
83 |
+
<div id="wpfp_10ecd1d835d0db002906d6666d27a916" class="flowplayer no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy" data-embed="false" style="max-width: 100%; background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
84 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
85 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
86 |
+
<a class="fp-prev" title="prev"></a><a class="fp-next" title="next"></a></div>
|
87 |
+
<div style="display: none" class="fp-playlist-external fv-playlist-design-2017 fp-playlist-has-captions" rel="wpfp_10ecd1d835d0db002906d6666d27a916">
|
88 |
+
<a href='#' onclick='return false' data-item='{"sources":[{"src":"https:\/\/cdn.site.com\/video1.mp4","type":"video\/mp4"}]}'><div style='background-image: url("https://cdn.site.com/video1.jpg")'></div><h4><span>Video 1</span></h4></a>
|
89 |
+
<a href='#' onclick='return false' data-item='{"sources":[{"src":"https:\/\/cdn.site.com\/video2.mp4","type":"video\/mp4"}]}'><div style='background-image: url("https://cdn.site.com/video2.jpg")'></div><h4><span>Video 2</span></h4></a>
|
90 |
+
<a href='#' onclick='return false' data-item='{"sources":[{"src":"https:\/\/cdn.site.com\/video3.mp4","type":"video\/mp4"}]}'><div style='background-image: url("https://cdn.site.com/video3.jpg")'></div><h4><span> Video 3</span></h4></a>
|
91 |
+
</div>
|
92 |
+
HTML;
|
93 |
+
|
94 |
+
$this->assertEquals( $this->fix_newlines($sample), $this->fix_newlines($output) );
|
95 |
+
|
96 |
+
|
97 |
+
$post = get_post( $this->playlist_slider );
|
98 |
+
$output = apply_filters( 'the_content', $post->post_content );
|
99 |
+
|
100 |
+
$sample = <<< HTML
|
101 |
+
<div id="wpfp_10ecd1d835d0db002906d6666d27a916" class="flowplayer no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy" data-embed="false" style="max-width: 100%; background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
102 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
103 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
104 |
+
</div>
|
105 |
+
<div class='fv-playlist-slider-wrapper'><div class="fp-playlist-external fv-playlist-design-2017 fp-playlist-horizontal fp-playlist-has-captions" rel="wpfp_10ecd1d835d0db002906d6666d27a916" style="width: 750px">
|
106 |
+
<a href='#' onclick='return false' data-item='{"sources":[{"src":"https:\/\/cdn.site.com\/video1.mp4","type":"video\/mp4"}]}'><div style='background-image: url("https://cdn.site.com/video1.jpg")'></div><h4><span>Video 1</span></h4></a>
|
107 |
+
<a href='#' onclick='return false' data-item='{"sources":[{"src":"https:\/\/cdn.site.com\/video2.mp4","type":"video\/mp4"}]}'><div style='background-image: url("https://cdn.site.com/video2.jpg")'></div><h4><span>Video 2</span></h4></a>
|
108 |
+
<a href='#' onclick='return false' data-item='{"sources":[{"src":"https:\/\/cdn.site.com\/video3.mp4","type":"video\/mp4"}]}'><div style='background-image: url("https://cdn.site.com/video3.jpg")'></div><h4><span> Video 3</span></h4></a>
|
109 |
+
</div>
|
110 |
+
</div>
|
111 |
+
HTML;
|
112 |
+
|
113 |
+
$this->assertEquals( $this->fix_newlines($sample), $this->fix_newlines($output) );
|
114 |
+
}
|
115 |
+
|
116 |
+
public function testPlaylistTabsShortcode() {
|
117 |
+
global $post;
|
118 |
+
|
119 |
+
$post = get_post( $this->playlist_tabs );
|
120 |
+
$output = apply_filters( 'the_content', $post->post_content );
|
121 |
+
|
122 |
+
$sample = <<< HTML
|
123 |
+
<script>document.body.className += " fv_flowplayer_tabs_hide";</script><div class="fv_flowplayer_tabs tabs woocommerce-tabs" style="max-width: 640px"><div id="tabs-10-1" class="fv_flowplayer_tabs_content"><ul><li><a href="#tabs-10-1-0">Video 1</a></li><li><a href="#tabs-10-1-1">Video 2</a></li><li><a href="#tabs-10-1-2"> Video 3</a></li></ul><div class="fv_flowplayer_tabs_cl"></div><div id="tabs-10-1-0" class="fv_flowplayer_tabs_first"><div id="wpfp_5d697f461a6a69e41882ec0212d63d1f" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video1.mp4","type":"video\/mp4"}]}" class="flowplayer no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy" data-embed="false" style="max-width: 640px; max-height: 360px; background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
124 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
125 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
126 |
+
|
127 |
+
</div>
|
128 |
+
</div><div id="tabs-10-1-1"><div id="wpfp_f31738e686c3bdae67dfd7e57dec3d8c" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video2.mp4","type":"video\/mp4"}]}" class="flowplayer no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy" data-embed="false" style="max-width: 640px; max-height: 360px; background-image: url(https://cdn.site.com/video2.jpg);" data-ratio="0.5625">
|
129 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
130 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
131 |
+
|
132 |
+
</div>
|
133 |
+
</div><div id="tabs-10-1-2"><div id="wpfp_0dfbb08c099beb557be57907b1c01eb2" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video3.mp4","type":"video\/mp4"}]}" class="flowplayer no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy" data-embed="false" style="max-width: 640px; max-height: 360px; background-image: url(https://cdn.site.com/video3.jpg);" data-ratio="0.5625">
|
134 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
135 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
136 |
+
|
137 |
+
</div>
|
138 |
+
</div><div class="fv_flowplayer_tabs_cl"></div><div class="fv_flowplayer_tabs_cr"></div></div></div>
|
139 |
+
HTML;
|
140 |
+
|
141 |
+
$this->assertEquals( $this->fix_newlines($sample), $this->fix_newlines($output) );
|
142 |
+
|
143 |
+
|
144 |
+
global $fv_fp;
|
145 |
+
$this->assertTrue( $fv_fp->load_tabs );
|
146 |
+
}
|
147 |
+
|
148 |
+
public function tearDown() {
|
149 |
+
global $fv_fp, $FV_Player_lightbox;
|
150 |
+
$fv_fp->load_tabs = false;
|
151 |
+
$FV_Player_lightbox = new FV_Player_lightbox(); // reset the lightbox loading flag and footer lightboxed players HTML
|
152 |
+
|
153 |
+
parent::tearDown();
|
154 |
+
}
|
155 |
+
|
156 |
+
}
|
test/integration-7/frontend/testSimpleShortcode.html
ADDED
@@ -0,0 +1,82 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<title>Test Blog</title>
|
2 |
+
<link rel='stylesheet' id='fv_flowplayer-css' href='http://example.org/wp-content/plugins/fv-wordpress-flowplayer/css/flowplayer-beta.css' type='text/css' media='all' />
|
3 |
+
<link rel='https://api.w.org/' href='http://example.org/index.php?rest_route=/' />
|
4 |
+
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://example.org/xmlrpc.php?rsd" />
|
5 |
+
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://example.org/wp-includes/wlwmanifest.xml" />
|
6 |
+
<style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style>
|
7 |
+
<style type="text/css">
|
8 |
+
.flowplayer.skin-slim { background-color: #000000 !important; }
|
9 |
+
.flowplayer.skin-slim .fp-color, .flowplayer.skin-slim .fp-selected { background-color: #bb0000 !important; }
|
10 |
+
.flowplayer.skin-slim .fp-color-fill .svg-color, .flowplayer.skin-slim .fp-color-fill svg.fvp-icon, .flowplayer.skin-slim .fp-color-fill { fill: #bb0000 !important; color: #bb0000 !important; }
|
11 |
+
.flowplayer.skin-slim .fp-controls, .fv-player-buttons a:active, .fv-player-buttons a { background-color: transparent !important; }
|
12 |
+
.flowplayer.skin-slim .fp-elapsed, .flowplayer.skin-slim .fp-duration, .flowplayer.skin-slim .noUI-time-in, .flowplayer.skin-slim .noUI-time-out { color: #ffffff !important; }
|
13 |
+
.flowplayer.skin-slim .fv-wp-flowplayer-notice-small { color: #ffffff !important; }
|
14 |
+
.flowplayer.skin-slim .fv-ab-loop .noUi-connect, .fv-player-buttons a.current { background-color: #bb0000 !important; }
|
15 |
+
#content .flowplayer.skin-slim, .flowplayer.skin-slim { font-family: Tahoma, Geneva, sans-serif; }
|
16 |
+
.flowplayer.skin-slim .fp-dropdown li.active { background-color: #bb0000 !important }
|
17 |
+
.flowplayer.skin-youtuby { background-color: #000000 !important; }
|
18 |
+
.flowplayer.skin-youtuby .fp-color, .flowplayer.skin-youtuby .fp-selected { background-color: #bb0000 !important; }
|
19 |
+
.flowplayer.skin-youtuby .fp-color-fill .svg-color, .flowplayer.skin-youtuby .fp-color-fill svg.fvp-icon, .flowplayer.skin-youtuby .fp-color-fill { fill: #bb0000 !important; color: #bb0000 !important; }
|
20 |
+
.flowplayer.skin-youtuby .fp-controls, .fv-player-buttons a:active, .fv-player-buttons a { background-color: rgba(0, 0, 0, 0.5) !important; }
|
21 |
+
.flowplayer.skin-youtuby .fp-elapsed, .flowplayer.skin-youtuby .fp-duration, .flowplayer.skin-youtuby .noUI-time-in, .flowplayer.skin-youtuby .noUI-time-out { color: #ffffff !important; }
|
22 |
+
.flowplayer.skin-youtuby .fv-wp-flowplayer-notice-small { color: #ffffff !important; }
|
23 |
+
.flowplayer.skin-youtuby .fv-ab-loop { background-color: rgba(0, 0, 0, 0.5) !important; }
|
24 |
+
.flowplayer.skin-youtuby .fv-ab-loop .noUi-handle { color: rgba(0, 0, 0, 0.5) !important; }
|
25 |
+
.flowplayer.skin-youtuby .fv_player_popup, .fvfp_admin_error_content { background: rgba(0, 0, 0, 0.5); }
|
26 |
+
.flowplayer.skin-youtuby .fv-ab-loop .noUi-connect, .fv-player-buttons a.current { background-color: #bb0000 !important; }
|
27 |
+
#content .flowplayer.skin-youtuby, .flowplayer.skin-youtuby { font-family: Tahoma, Geneva, sans-serif; }
|
28 |
+
.flowplayer.skin-youtuby .fp-dropdown li.active { background-color: #bb0000 !important }
|
29 |
+
.flowplayer.skin-custom { background-color: #000000 !important; }
|
30 |
+
.flowplayer.skin-custom .fp-color, .flowplayer.skin-custom .fp-selected { background-color: #bb0000 !important; }
|
31 |
+
.flowplayer.skin-custom .fp-color-fill .svg-color, .flowplayer.skin-custom .fp-color-fill svg.fvp-icon, .flowplayer.skin-custom .fp-color-fill { fill: #bb0000 !important; color: #bb0000 !important; }
|
32 |
+
.flowplayer.skin-custom .fp-controls, .fv-player-buttons a:active, .fv-player-buttons a { background-color: #333333 !important; }
|
33 |
+
.flowplayer.skin-custom a.fp-play, .flowplayer.skin-custom a.fp-mute, .flowplayer.skin-custom .fp-controls, .flowplayer.skin-custom .fv-ab-loop, .fv-player-buttons a:active, .fv-player-buttons a { color: #eeeeee !important; }
|
34 |
+
.flowplayer.skin-custom .fvfp_admin_error, .flowplayer.skin-custom .fvfp_admin_error a, #content .flowplayer.skin-custom .fvfp_admin_error a { color: #eeeeee; }
|
35 |
+
.flowplayer.skin-custom .fp-volumeslider, .flowplayer.skin-custom .fp-buffer, .flowplayer.skin-custom .noUi-background, .flowplayer.skin-custom .fv-ab-loop .noUi-handle { background-color: #eeeeee !important; }
|
36 |
+
.flowplayer.skin-custom .fp-elapsed, .flowplayer.skin-custom .fp-duration, .flowplayer.skin-custom .noUI-time-in, .flowplayer.skin-custom .noUI-time-out { color: #eeeeee !important; }
|
37 |
+
.flowplayer.skin-custom .fv-wp-flowplayer-notice-small { color: #eeeeee !important; }
|
38 |
+
.flowplayer.skin-custom .fv-ab-loop { background-color: #333333 !important; }
|
39 |
+
.flowplayer.skin-custom .fv-ab-loop .noUi-handle { color: #333333 !important; }
|
40 |
+
.flowplayer.skin-custom .fv_player_popup, .fvfp_admin_error_content { background: #333333; }
|
41 |
+
.flowplayer.skin-custom .fv-ab-loop .noUi-connect, .fv-player-buttons a.current { background-color: #bb0000 !important; }
|
42 |
+
#content .flowplayer.skin-custom, .flowplayer.skin-custom { font-family: Tahoma, Geneva, sans-serif; }
|
43 |
+
.flowplayer.skin-custom .fp-dropdown li.active { background-color: #bb0000 !important }
|
44 |
+
|
45 |
+
.wpfp_custom_background { display: none; }
|
46 |
+
.wpfp_custom_popup { position: absolute; top: 10%; z-index: 20; text-align: center; width: 100%; color: #fff; }
|
47 |
+
.wpfp_custom_popup h1, .wpfp_custom_popup h2, .wpfp_custom_popup h3, .wpfp_custom_popup h4 { color: #fff; }
|
48 |
+
.is-finished .wpfp_custom_background { display: block; }
|
49 |
+
|
50 |
+
.wpfp_custom_ad { position: absolute; bottom: 10%; z-index: 20; width: 100%; }
|
51 |
+
.wpfp_custom_ad_content { background: white; margin: 0 auto; position: relative } .wpfp_custom_ad { color: #888; z-index: 20 !important; }
|
52 |
+
.wpfp_custom_ad a { color: #ff3333 }
|
53 |
+
|
54 |
+
.fp-playlist-external > a > span { background-color:#808080; }
|
55 |
+
.fp-playlist-external > a.is-active > span { border-color:#bb0000; }
|
56 |
+
.fp-playlist-external.fv-playlist-design-2014 a.is-active,.fp-playlist-external.fv-playlist-design-2014 a.is-active h4,.fp-playlist-external.fp-playlist-only-captions a.is-active,.fp-playlist-external.fv-playlist-design-2014 a.is-active h4, .fp-playlist-external.fp-playlist-only-captions a.is-active h4 { color:#bb0000; }
|
57 |
+
.fp-playlist-vertical { background-color:#808080; }
|
58 |
+
.flowplayer .fp-captions p { font-size: 16px; } .flowplayer .fp-logo { bottom: 30px; left: 15px }
|
59 |
+
.flowplayer .fp-captions p { background-color: rgba(0,0,0,0.5); }
|
60 |
+
|
61 |
+
</style>
|
62 |
+
<div id="wpfp_1fd794010fde2df80985efba80286197" data-item="{"sources":[{"src":"https:\/\/cdn.site.com\/video.mp4","type":"video\/mp4"}]}" class="flowplayer no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy" style="max-width: 640px; max-height: 360px; " data-ratio="0.5625">
|
63 |
+
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
64 |
+
<div class="fp-ui"><div class="fp-play fp-visible"><a class="fp-icon fp-playbtn"></a></div></div>
|
65 |
+
<div class='fvp-share-bar'><ul class="fvp-sharing">
|
66 |
+
<li><a class="sharing-facebook" href="https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fexample.org%2F%3Fp%3D1234" target="_blank">Facebook</a></li>
|
67 |
+
<li><a class="sharing-twitter" href="https://twitter.com/home?status=Test+Blog+http%3A%2F%2Fexample.org%2F%3Fp%3D1234" target="_blank">Twitter</a></li>
|
68 |
+
<li><a class="sharing-google" href="https://plus.google.com/share?url=http%3A%2F%2Fexample.org%2F%3Fp%3D1234" target="_blank">Google+</a></li>
|
69 |
+
<li><a class="sharing-email" href="mailto:?body=Check%20out%20the%20amazing%20video%20here%3A%20http%3A%2F%2Fexample.org%2F%3Fp%3D1234" target="_blank">Email</a></li></ul><div><a class="sharing-link" href="http://example.org/?p=1234" target="_blank">Link</a></div><div><label><a class="embed-code-toggle" href="#"><strong>Embed</strong></a></label></div><div class="embed-code"><label>Copy and paste this HTML code into your webpage to embed.</label><textarea></textarea></div></div>
|
70 |
+
</div>
|
71 |
+
|
72 |
+
<script type='text/javascript' src='http://example.org/wp-includes/js/jquery/jquery.js?ver=1.12.4'></script>
|
73 |
+
<script type='text/javascript' src='http://example.org/wp-includes/js/jquery/jquery-migrate.js?ver=1.4.1'></script>
|
74 |
+
<script type='text/javascript'>
|
75 |
+
/* <![CDATA[ */
|
76 |
+
var fv_flowplayer_conf = {"fullscreen":"1","swf":"\/\/example.org\/wp-content\/plugins\/fv-wordpress-flowplayer\/flowplayer-beta\/flowplayer.swf?ver=","swfHls":"\/\/example.org\/wp-content\/plugins\/fv-wordpress-flowplayer\/flowplayer-beta\/flowplayerhls.swf?ver=","embed":{"library":"\/\/example.org\/wp-content\/plugins\/fv-wordpress-flowplayer\/flowplayer-beta\/fv-flowplayer.min.js","script":"\/\/example.org\/wp-content\/plugins\/fv-wordpress-flowplayer\/flowplayer-beta\/embed.min.js","skin":"\/\/example.org\/wp-content\/plugins\/fv-wordpress-flowplayer\/css\/flowplayer-beta.css","swf":"\/\/example.org\/wp-content\/plugins\/fv-wordpress-flowplayer\/flowplayer-beta\/flowplayer.swf?ver=","swfHls":"\/\/example.org\/wp-content\/plugins\/fv-wordpress-flowplayer\/flowplayer-beta\/flowplayerhls.swf?ver="},"speeds":[0.25,0.5,0.75,1,1.25,1.5,1.75,2],"video_hash_links":"1","safety_resize":"1","volume":"0.7","mobile_native_fullscreen":"","mobile_force_fullscreen":"","sticky_video":"","sticky_place":"right-bottom","sticky_width":"380"};
|
77 |
+
var fv_flowplayer_translations = {"0":"","1":"Video loading aborted","2":"Network error","3":"Video not properly encoded","4":"Video file not found","5":"Unsupported video","6":"Skin not found","7":"SWF file not found","8":"Subtitles not found","9":"Invalid RTMP URL","10":"Unsupported video format. Try installing Adobe Flash.","11":"Click to watch the video","12":"[This post contains video, click to play]","video_expired":"<h2>Video file expired.<br \/>Please reload the page and play it again.<\/h2>","unsupported_format":"<h2>Unsupported video format.<br \/>Please use a Flash compatible device.<\/h2>","mobile_browser_detected_1":"Mobile browser detected, serving low bandwidth video.","mobile_browser_detected_2":"Click here","mobile_browser_detected_3":"for full quality.","live_stream_failed":"<h2>Live stream load failed.<\/h2><h3>Please try again later, perhaps the stream is currently offline.<\/h3>","live_stream_failed_2":"<h2>Live stream load failed.<\/h2><h3>Please try again later, perhaps the stream is currently offline.<\/h3>","what_is_wrong":"Please tell us what is wrong :","full_sentence":"Please give us more information (a full sentence) so we can help you better","error_JSON":"Admin: Error parsing JSON","no_support_IE9":"Admin: Video checker doesn't support IE 9.","check_failed":"Admin: Check failed.","playlist_current":"Now Playing","video_issues":"Video Issues","video_reload":"Video loading has stalled, click to reload","link_copied":"Video Link Copied to Clipboard","embed_copied":"Embed Code Copied to Clipboard","subtitles_disabled":"Subtitles disabled","subtitles_switched":"Subtitles switched to ","warning_iphone_subs":"This video has subtitles, that are not supported on your device.","warning_unstable_android":"You are using an old Android device. If you experience issues with the video please use <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=org.mozilla.firefox\">Firefox<\/a>. <a target=\"_blank\" href=\"https:\/\/foliovision.com\/2017\/05\/issues-with-vimeo-on-android\">Why?<\/a>","warning_samsungbrowser":"You are using the Samsung Browser which is an older and buggy version of Google Chrome. If you experience issues with the video please use <a href=\"https:\/\/www.mozilla.org\/en-US\/firefox\/new\/\">Firefox<\/a> or other modern browser.","warning_old_safari":"You are using an old Safari browser. If you experience issues with the video please use <a href=\"https:\/\/www.mozilla.org\/en-US\/firefox\/new\/\">Firefox<\/a> or other modern browser. <a target=\"_blank\" href=\"https:\/\/foliovision.com\/2017\/05\/issues-with-vimeo-on-android\">Why?<\/a>"};
|
78 |
+
var fv_fp_ajaxurl = "http:\/\/example.org\/wp-admin\/admin-ajax.php";
|
79 |
+
var fv_flowplayer_playlists = [];
|
80 |
+
/* ]]> */
|
81 |
+
</script>
|
82 |
+
<script type='text/javascript' src='http://example.org/wp-content/plugins/fv-wordpress-flowplayer/flowplayer-beta/fv-flowplayer.min.js'></script>
|
test/integration-7/frontend/videoPositionSavingTest.php
ADDED
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
require_once( dirname(__FILE__).'/../fv-player-ajax-unittest-case.php');
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Tests WordPress integration of playlists without any advertisements present
|
7 |
+
* in the HTML markup.
|
8 |
+
*/
|
9 |
+
final class FV_Player_videoPositionSavingTestCase extends FV_Player_Ajax_UnitTestCase {
|
10 |
+
|
11 |
+
var $postID = -1;
|
12 |
+
var $userID = -1;
|
13 |
+
|
14 |
+
protected $backupGlobals = false;
|
15 |
+
|
16 |
+
public function setUp() {
|
17 |
+
parent::setUp();
|
18 |
+
|
19 |
+
// create a post with playlist shortcode
|
20 |
+
$this->postID = $this->factory->post->create( array(
|
21 |
+
'post_title' => 'Playlist with Ads',
|
22 |
+
'post_content' => '[fvplayer src="https://cdn.site.com/1.mp4" playlist="https://cdn.site.com/2.mp4;https://cdn.site.com/3.mp4" saveposition="yes"]'
|
23 |
+
) );
|
24 |
+
|
25 |
+
global $fv_fp;
|
26 |
+
|
27 |
+
include_once "../../../fv-wordpress-flowplayer/models/flowplayer.php";
|
28 |
+
include_once "../../../fv-wordpress-flowplayer/models/flowplayer-frontend.php";
|
29 |
+
$fv_fp = new flowplayer_frontend();
|
30 |
+
|
31 |
+
// add new user and create last saved position metadata for this new user
|
32 |
+
$this->userID = $this->factory->user->create(array(
|
33 |
+
'role' => 'admin'
|
34 |
+
));
|
35 |
+
|
36 |
+
/*add_user_meta($this->userID, 'fv_wp_flowplayer_position_watch?v=1XiHhpGUmQg', '12');
|
37 |
+
var_export(get_user_meta($this->userID, 'fv_wp_flowplayer_position_watch?v=1XiHhpGUmQg', true ));*/
|
38 |
+
|
39 |
+
}
|
40 |
+
|
41 |
+
public function testNoSaveForNotLoggedInUsers() {
|
42 |
+
// is anybody listening out there?
|
43 |
+
$this->assertTrue( has_action('wp_ajax_fv_wp_flowplayer_video_position_save') );
|
44 |
+
|
45 |
+
// Spoof the nonce in the POST superglobal
|
46 |
+
//$_POST['_wpnonce'] = wp_create_nonce( 'anything-here-if-needed' );
|
47 |
+
|
48 |
+
// set up POST data for video resume times
|
49 |
+
$_POST['action'] = 'fv_wp_flowplayer_video_position_save';
|
50 |
+
$_POST['videoTimes'] = array(
|
51 |
+
array(
|
52 |
+
'name' => 'https://cdn.site.com/2.mp4',
|
53 |
+
'position' => 12
|
54 |
+
)
|
55 |
+
);
|
56 |
+
|
57 |
+
// call the AJAX which
|
58 |
+
try {
|
59 |
+
$this->_handleAjax( 'fv_wp_flowplayer_video_position_save' );
|
60 |
+
} catch ( WPAjaxDieContinueException $e ) {
|
61 |
+
$response = json_decode( $this->_last_response );
|
62 |
+
$this->assertInternalType( 'object', $response );
|
63 |
+
$this->assertObjectHasAttribute( 'success', $response );
|
64 |
+
$this->assertFalse( $response->success );
|
65 |
+
}
|
66 |
+
|
67 |
+
// check for clear playlist HTML without last player position data items
|
68 |
+
$post = get_post( $this->postID );
|
69 |
+
$output = apply_filters( 'the_content', $post->post_content );
|
70 |
+
|
71 |
+
$expect = "<div id=\"some-test-hash\" class=\"flowplayer no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy\" style=\"max-width: 100%; \" data-ratio=\"0.5625\" data-save-position=\"yes\">
|
72 |
+
<div class=\"fp-ratio\" style=\"padding-top: 56.25%\"></div>
|
73 |
+
<div class=\"fp-ui\"><div class=\"fp-play fp-visible\"><a class=\"fp-icon fp-playbtn\"></a></div></div>
|
74 |
+
<div class='fvp-share-bar'><ul class=\"fvp-sharing\">
|
75 |
+
<li><a class=\"sharing-facebook\" href=\"https://www.facebook.com/sharer/sharer.php?u=\" target=\"_blank\">Facebook</a></li>
|
76 |
+
<li><a class=\"sharing-twitter\" href=\"https://twitter.com/home?status=Test+Blog+\" target=\"_blank\">Twitter</a></li>
|
77 |
+
<li><a class=\"sharing-google\" href=\"https://plus.google.com/share?url=\" target=\"_blank\">Google+</a></li>
|
78 |
+
<li><a class=\"sharing-email\" href=\"mailto:?body=Check%20out%20the%20amazing%20video%20here%3A%20\" target=\"_blank\">Email</a></li></ul><div><label><a class=\"embed-code-toggle\" href=\"#\"><strong>Embed</strong></a></label></div><div class=\"embed-code\"><label>Copy and paste this HTML code into your webpage to embed.</label><textarea></textarea></div></div>
|
79 |
+
</div>
|
80 |
+
<div class=\"fp-playlist-external fv-playlist-design-2017 fp-playlist-horizontal\" rel=\"some-test-hash\">
|
81 |
+
<a href='#' onclick='return false' data-item='{\"sources\":[{\"src\":\"https:\/\/cdn.site.com\/1.mp4\",\"type\":\"video\/mp4\"}]}'><div></div></a>
|
82 |
+
<a href='#' onclick='return false' data-item='{\"sources\":[{\"src\":\"https:\/\/cdn.site.com\/2.mp4\",\"type\":\"video\/mp4\"}]}'><div></div></a>
|
83 |
+
<a href='#' onclick='return false' data-item='{\"sources\":[{\"src\":\"https:\/\/cdn.site.com\/3.mp4\",\"type\":\"video\/mp4\"}]}'><div></div></a>
|
84 |
+
</div>
|
85 |
+
|
86 |
+
";
|
87 |
+
|
88 |
+
$this->assertEquals( $this->fix_newlines($expect), $this->fix_newlines($output) );
|
89 |
+
}
|
90 |
+
|
91 |
+
public function testSaveAndPlaylistHTMLForLoggedInUsers() {
|
92 |
+
// is anybody listening out there?
|
93 |
+
$this->assertTrue( has_action('wp_ajax_fv_wp_flowplayer_video_position_save') );
|
94 |
+
|
95 |
+
// Spoof the nonce in the POST superglobal
|
96 |
+
//$_POST['_wpnonce'] = wp_create_nonce( 'anything-here-if-needed' );
|
97 |
+
|
98 |
+
// set this user as the active one
|
99 |
+
global $current_user;
|
100 |
+
$restore_user = $current_user;
|
101 |
+
wp_set_current_user($this->userID);
|
102 |
+
|
103 |
+
// set up POST data for video resume times
|
104 |
+
$_POST['action'] = 'fv_wp_flowplayer_video_position_save';
|
105 |
+
$_POST['videoTimes'] = array(
|
106 |
+
array(
|
107 |
+
'name' => 'https://cdn.site.com/2.mp4',
|
108 |
+
'position' => 12
|
109 |
+
)
|
110 |
+
);
|
111 |
+
|
112 |
+
// call the AJAX which
|
113 |
+
try {
|
114 |
+
$this->_handleAjax( 'fv_wp_flowplayer_video_position_save' );
|
115 |
+
} catch ( WPAjaxDieContinueException $e ) {
|
116 |
+
$response = json_decode( $this->_last_response );
|
117 |
+
$this->assertInternalType( 'object', $response );
|
118 |
+
$this->assertObjectHasAttribute( 'success', $response );
|
119 |
+
$this->assertTrue( $response->success );
|
120 |
+
}
|
121 |
+
|
122 |
+
// check if metadata was saved correctly
|
123 |
+
$this->assertEquals(12, get_user_meta($this->userID, 'fv_wp_flowplayer_position_2', true ));
|
124 |
+
|
125 |
+
// check that the playlist HTML is being generated correctly, with the last player position taken into consideration
|
126 |
+
$post = get_post( $this->postID );
|
127 |
+
$output = apply_filters( 'the_content', $post->post_content );
|
128 |
+
|
129 |
+
$expect = "<div id=\"some-test-hash\" class=\"flowplayer no-brand is-splash no-svg is-paused skin-slim fp-slim fp-edgy\" style=\"max-width: 100%; \" data-ratio=\"0.5625\" data-save-position=\"yes\">
|
130 |
+
<div class=\"fp-ratio\" style=\"padding-top: 56.25%\"></div>
|
131 |
+
<div class=\"fp-ui\"><div class=\"fp-play fp-visible\"><a class=\"fp-icon fp-playbtn\"></a></div></div>
|
132 |
+
<div class='fvp-share-bar'><ul class=\"fvp-sharing\">
|
133 |
+
<li><a class=\"sharing-facebook\" href=\"https://www.facebook.com/sharer/sharer.php?u=\" target=\"_blank\">Facebook</a></li>
|
134 |
+
<li><a class=\"sharing-twitter\" href=\"https://twitter.com/home?status=Test+Blog+\" target=\"_blank\">Twitter</a></li>
|
135 |
+
<li><a class=\"sharing-google\" href=\"https://plus.google.com/share?url=\" target=\"_blank\">Google+</a></li>
|
136 |
+
<li><a class=\"sharing-email\" href=\"mailto:?body=Check%20out%20the%20amazing%20video%20here%3A%20\" target=\"_blank\">Email</a></li></ul><div><label><a class=\"embed-code-toggle\" href=\"#\"><strong>Embed</strong></a></label></div><div class=\"embed-code\"><label>Copy and paste this HTML code into your webpage to embed.</label><textarea></textarea></div></div>
|
137 |
+
</div>
|
138 |
+
<div class=\"fp-playlist-external fv-playlist-design-2017 fp-playlist-horizontal\" rel=\"some-test-hash\">
|
139 |
+
<a href='#' onclick='return false' data-item='{\"sources\":[{\"src\":\"https:\/\/cdn.site.com\/1.mp4\",\"type\":\"video\/mp4\"}]}'><div></div></a>
|
140 |
+
<a href='#' onclick='return false' data-item='{\"sources\":[{\"src\":\"https:\/\/cdn.site.com\/2.mp4\",\"type\":\"video\/mp4\",\"position\":\"12\"}]}'><div></div></a>
|
141 |
+
<a href='#' onclick='return false' data-item='{\"sources\":[{\"src\":\"https:\/\/cdn.site.com\/3.mp4\",\"type\":\"video\/mp4\"}]}'><div></div></a>
|
142 |
+
</div>
|
143 |
+
|
144 |
+
";
|
145 |
+
|
146 |
+
$this->assertEquals( $this->fix_newlines($expect), $this->fix_newlines($output) );
|
147 |
+
|
148 |
+
$current_user;
|
149 |
+
}
|
150 |
+
|
151 |
+
}
|
test/integration-7/fv-player-ajax-unittest-case.php
ADDED
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
abstract class FV_Player_Ajax_UnitTestCase extends WP_Ajax_UnitTestCase {
|
4 |
+
|
5 |
+
protected $backupGlobals = false;
|
6 |
+
|
7 |
+
public function setUp() {
|
8 |
+
parent::setUp();
|
9 |
+
|
10 |
+
global $fv_fp;
|
11 |
+
$this->restore = $fv_fp->conf;
|
12 |
+
|
13 |
+
// somehow this got hooked in again after being removed in WP_Ajax_UnitTestCase::setUpBeforeClass() already
|
14 |
+
remove_action( 'admin_init', '_maybe_update_core' );
|
15 |
+
remove_action( 'admin_init', '_maybe_update_plugins' );
|
16 |
+
remove_action( 'admin_init', '_maybe_update_themes' );
|
17 |
+
}
|
18 |
+
|
19 |
+
public function fix_newlines( $html ) {
|
20 |
+
$html = preg_replace( '/"wpfp_[0-9a-z]+"/', '"some-test-hash"', $html);
|
21 |
+
$html = preg_replace( '~<input type="hidden" id="([^"]*?)nonce" name="([^"]*?)nonce" value="([^"]*?)" />~', '<input type="hidden" id="$1nonce" name="$2nonce" value="XYZ" />', $html);
|
22 |
+
$html = preg_replace( "~nonce: '([^']*?)'~", "nonce: 'XYZ'", $html);
|
23 |
+
|
24 |
+
// testProfileScreen
|
25 |
+
$html = preg_replace( '~fv_ytplayer_[a-z0-9]+~', 'fv_ytplayer_XYZ', $html);
|
26 |
+
$html = preg_replace( '~fv_vimeo_[a-z0-9]+~', 'fv_vimeo_XYZ', $html);
|
27 |
+
$html = preg_replace( '~<input type="hidden" id="fv-player-custom-videos-_fv_player_user_video-0" name="fv-player-custom-videos-_fv_player_user_video-0" value="[^"]*?" />~', '<input type="hidden" id="fv-player-custom-videos-_fv_player_user_video-0" name="fv-player-custom-videos-_fv_player_user_video-0" value="XYZ" />', $html);
|
28 |
+
|
29 |
+
$html = preg_replace( '~convert_jwplayer=[a-z0-9]+~', 'convert_jwplayer=XYZ', $html);
|
30 |
+
$html = preg_replace( '~_wpnonce=[a-z0-9]+~', '_wpnonce=XYZ', $html);
|
31 |
+
|
32 |
+
$html = explode("\n",$html);
|
33 |
+
foreach( $html AS $k => $v ) {
|
34 |
+
if( trim($v) == '' ) unset($html[$k]);
|
35 |
+
}
|
36 |
+
$html = implode( "\n", array_map('trim',$html) );
|
37 |
+
|
38 |
+
$html = preg_replace( '~\t~', '', $html );
|
39 |
+
return $html;
|
40 |
+
}
|
41 |
+
|
42 |
+
// we need to set up PRO player with an appropriate key, or the PRO player won't work
|
43 |
+
public static function wpSetUpBeforeClass() {
|
44 |
+
global $fv_fp;
|
45 |
+
|
46 |
+
// without this included, fv_wp_flowplayer_delete_extensions_transients() would not be found
|
47 |
+
//include_once "../../../fv-wordpress-flowplayer/controller/backend.php";
|
48 |
+
|
49 |
+
// include the flowplayer loader
|
50 |
+
include_once "../../../fv-wordpress-flowplayer/flowplayer.php";
|
51 |
+
|
52 |
+
// include the PRO plugin class, so it can intercept data saving
|
53 |
+
// and update the ads structure as needed for saving
|
54 |
+
//include_once "../../beta/fv-player-pro.class.php";
|
55 |
+
|
56 |
+
// save initial settings
|
57 |
+
//$fv_fp->_set_conf();
|
58 |
+
}
|
59 |
+
|
60 |
+
public function tearDown() {
|
61 |
+
parent::tearDown();
|
62 |
+
|
63 |
+
global $fv_fp;
|
64 |
+
$fv_fp->conf = $this->restore;
|
65 |
+
}
|
66 |
+
|
67 |
+
}
|
test/integration-7/fv-player-unittest-case.php
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
abstract class FV_Player_UnitTestCase extends WP_UnitTestCase {
|
4 |
+
|
5 |
+
protected $backupGlobals = false;
|
6 |
+
|
7 |
+
public function setUp() {
|
8 |
+
parent::setUp();
|
9 |
+
|
10 |
+
global $fv_fp;
|
11 |
+
$this->restore = $fv_fp->conf;
|
12 |
+
}
|
13 |
+
|
14 |
+
public function fix_newlines( $html ) {
|
15 |
+
$html = preg_replace( '/"wpfp_[0-9a-z]+"/', '"some-test-hash"', $html);
|
16 |
+
$html = preg_replace( '~<input type="hidden" id="([^"]*?)nonce" name="([^"]*?)nonce" value="([^"]*?)" />~', '<input type="hidden" id="$1nonce" name="$2nonce" value="XYZ" />', $html);
|
17 |
+
$html = preg_replace( '~<input type="hidden" id="nonce_([^"]*?)" name="nonce_([^"]*?)" value="([^"]*?)" />~', '<input type="hidden" id="nonce_$1" name="nonce_$2" value="XYZ" />', $html);
|
18 |
+
$html = preg_replace( "~nonce: '([^']*?)'~", "nonce: 'XYZ'", $html);
|
19 |
+
|
20 |
+
// testProfileScreen
|
21 |
+
$html = preg_replace( '~fv_ytplayer_[a-z0-9]+~', 'fv_ytplayer_XYZ', $html);
|
22 |
+
$html = preg_replace( '~fv_vimeo_[a-z0-9]+~', 'fv_vimeo_XYZ', $html);
|
23 |
+
$html = preg_replace( '~<input type="hidden" id="fv-player-custom-videos-_fv_player_user_video-0" name="fv-player-custom-videos-_fv_player_user_video-0" value="[^"]*?" />~', '<input type="hidden" id="fv-player-custom-videos-_fv_player_user_video-0" name="fv-player-custom-videos-_fv_player_user_video-0" value="XYZ" />', $html);
|
24 |
+
|
25 |
+
$html = preg_replace( '~convert_jwplayer=[a-z0-9]+~', 'convert_jwplayer=XYZ', $html);
|
26 |
+
$html = preg_replace( '~_wpnonce=[a-z0-9]+~', '_wpnonce=XYZ', $html);
|
27 |
+
|
28 |
+
$html = explode("\n",$html);
|
29 |
+
foreach( $html AS $k => $v ) {
|
30 |
+
if( trim($v) == '' ) unset($html[$k]);
|
31 |
+
}
|
32 |
+
$html = implode( "\n", array_map('trim',$html) );
|
33 |
+
|
34 |
+
$html = preg_replace( '~\t~', '', $html );
|
35 |
+
|
36 |
+
// playlist in lightbox test
|
37 |
+
$html = preg_replace( "/(href|data-fv-lightbox|data-src)='#wpfp_[^']+'/", "$1='#some-test-hash'", $html);
|
38 |
+
$html = preg_replace( '~fv_flowplayer_[a-z0-9]+_lightbox_starter~', 'fv_flowplayer_XYZ_lightbox_starter', $html);
|
39 |
+
|
40 |
+
// tabbed playlist test
|
41 |
+
$html = preg_replace( '~tabs-\d+~', 'tabs-1', $html);
|
42 |
+
|
43 |
+
// splash end
|
44 |
+
$html = preg_replace( '~wpfp_[a-z0-9]+_custom_background~', 'wpfp_XYZ_custom_background', $html);
|
45 |
+
|
46 |
+
return $html;
|
47 |
+
}
|
48 |
+
|
49 |
+
// we need to set up PRO player with an appropriate key, or the PRO player won't work
|
50 |
+
public static function wpSetUpBeforeClass() {
|
51 |
+
global $fv_fp;
|
52 |
+
|
53 |
+
// without this included, fv_wp_flowplayer_delete_extensions_transients() would not be found
|
54 |
+
//include_once "../../../fv-wordpress-flowplayer/controller/backend.php";
|
55 |
+
|
56 |
+
// include the flowplayer loader
|
57 |
+
include_once "../../../fv-wordpress-flowplayer/flowplayer.php";
|
58 |
+
|
59 |
+
// include the PRO plugin class, so it can intercept data saving
|
60 |
+
// and update the ads structure as needed for saving
|
61 |
+
//include_once "../../beta/fv-player-pro.class.php";
|
62 |
+
|
63 |
+
// save initial settings
|
64 |
+
//$fv_fp->_set_conf();
|
65 |
+
}
|
66 |
+
|
67 |
+
public function tearDown() {
|
68 |
+
parent::tearDown();
|
69 |
+
|
70 |
+
global $fv_fp;
|
71 |
+
$fv_fp->conf = $this->restore;
|
72 |
+
}
|
73 |
+
|
74 |
+
}
|
test/integration-7/phpunit.xml
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<phpunit bootstrap="bootstrap.php">
|
2 |
+
<testsuites>
|
3 |
+
<testsuite name="FVPlayer">
|
4 |
+
<directory suffix="Test.php">frontend</directory>
|
5 |
+
<directory suffix="Test.php">backend</directory>
|
6 |
+
</testsuite>
|
7 |
+
</testsuites>
|
8 |
+
</phpunit>
|
test/integration/backend/testSettingsScreen.html
CHANGED
@@ -638,12 +638,12 @@ jQuery(document).ready(function($) {
|
|
638 |
</td>
|
639 |
</tr>
|
640 |
<tr>
|
641 |
-
<td class="first"><label for="css_disable">Disable saving
|
642 |
<td>
|
643 |
<p class="description">
|
644 |
<input type="hidden" name="css_disable" value="false"/>
|
645 |
<input type="checkbox" name="css_disable" id="css_disable" value="true" />
|
646 |
-
Normally the player CSS configuration is stored in wp-content/fv-player-custom/style-{blog_id}.css. <span class="more">We do this to avoid
|
647 |
</p>
|
648 |
</td>
|
649 |
</tr>
|
@@ -981,7 +981,7 @@ jQuery(document).ready(function($) {
|
|
981 |
<div class="inside">
|
982 |
<style id="fv-style-preview"></style>
|
983 |
<div class="flowplayer-wrapper">
|
984 |
-
<div id="wpfp_1b7da827d9fee9aa6d5bb9c5dca973bf" class="flowplayer no-brand is-splash fvp-play-button" style="background-image: url(https://i.vimeocdn.com/video/609485450_1280.jpg);" data-ratio="0.5625">
|
985 |
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
986 |
<div class='fvp-share-bar'><ul class="fvp-sharing">
|
987 |
<li><a class="sharing-facebook" href="https://www.facebook.com/sharer/sharer.php?u=" target="_blank">Facebook</a></li>
|
638 |
</td>
|
639 |
</tr>
|
640 |
<tr>
|
641 |
+
<td class="first"><label for="css_disable">Disable saving skin CSS to a static file:</label></td>
|
642 |
<td>
|
643 |
<p class="description">
|
644 |
<input type="hidden" name="css_disable" value="false"/>
|
645 |
<input type="checkbox" name="css_disable" id="css_disable" value="true" />
|
646 |
+
Normally the player CSS configuration is stored in wp-content/fv-player-custom/style-{blog_id}.css. <span class="more">We do this to avoid a big style tag in your site <head>. Don't edit this file though, as it will be overwritten by plugin update or saving its options!</span> <a href="#" class="show-more">(…)</a>
|
647 |
</p>
|
648 |
</td>
|
649 |
</tr>
|
981 |
<div class="inside">
|
982 |
<style id="fv-style-preview"></style>
|
983 |
<div class="flowplayer-wrapper">
|
984 |
+
<div id="wpfp_1b7da827d9fee9aa6d5bb9c5dca973bf" class="flowplayer no-brand is-splash fvp-play-button" style="max-width: 100%; background-image: url(https://i.vimeocdn.com/video/609485450_1280.jpg);" data-ratio="0.5625">
|
985 |
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
986 |
<div class='fvp-share-bar'><ul class="fvp-sharing">
|
987 |
<li><a class="sharing-facebook" href="https://www.facebook.com/sharer/sharer.php?u=" target="_blank">Facebook</a></li>
|
test/integration/bootstrap.php
CHANGED
@@ -25,6 +25,7 @@ $GLOBALS['wp_tests_options'] = array(
|
|
25 |
'active_plugins' => array(
|
26 |
'fv-wordpress-flowplayer/flowplayer.php',
|
27 |
),
|
|
|
28 |
);
|
29 |
|
30 |
// If the develop repo location is defined (as WP_DEVELOP_DIR), use that
|
25 |
'active_plugins' => array(
|
26 |
'fv-wordpress-flowplayer/flowplayer.php',
|
27 |
),
|
28 |
+
'fv-player-pro-release' => 'release',
|
29 |
);
|
30 |
|
31 |
// If the develop repo location is defined (as WP_DEVELOP_DIR), use that
|
test/integration/frontend/shortcodesPlaylistTest.php
CHANGED
@@ -43,7 +43,7 @@ final class FV_Player_ShortcodePlaylistTestCase extends FV_Player_UnitTestCase {
|
|
43 |
$output = apply_filters( 'the_content', $post->post_content );
|
44 |
|
45 |
$sample = <<< HTML
|
46 |
-
<div id="wpfp_10ecd1d835d0db002906d6666d27a916" class="flowplayer no-brand is-splash fvp-play-button" data-embed="false" style="background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
47 |
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
48 |
</div>
|
49 |
<div class="fp-playlist-external fv-playlist-design-2017 fp-playlist-horizontal fp-playlist-has-captions" rel="wpfp_10ecd1d835d0db002906d6666d27a916">
|
@@ -60,7 +60,7 @@ HTML;
|
|
60 |
$output = apply_filters( 'the_content', $post->post_content );
|
61 |
|
62 |
$sample = <<< HTML
|
63 |
-
<div class="fp-playlist-vertical-wrapper"><div id="wpfp_10ecd1d835d0db002906d6666d27a916" class="flowplayer no-brand is-splash fvp-play-button" data-embed="false" style="background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
64 |
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
65 |
</div>
|
66 |
<div class="fp-playlist-external fv-playlist-design-2017 fp-playlist-vertical fp-playlist-has-captions" rel="wpfp_10ecd1d835d0db002906d6666d27a916">
|
@@ -78,7 +78,7 @@ HTML;
|
|
78 |
$output = apply_filters( 'the_content', $post->post_content );
|
79 |
|
80 |
$sample = <<< HTML
|
81 |
-
<div id="wpfp_10ecd1d835d0db002906d6666d27a916" class="flowplayer no-brand is-splash fvp-play-button" data-embed="false" style="background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
82 |
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
83 |
<a class="fp-prev" title="prev"><</a><a class="fp-next" title="next">></a></div>
|
84 |
<div style="display: none" class="fp-playlist-external fv-playlist-design-2017 fp-playlist-has-captions" rel="wpfp_10ecd1d835d0db002906d6666d27a916">
|
@@ -95,7 +95,7 @@ HTML;
|
|
95 |
$output = apply_filters( 'the_content', $post->post_content );
|
96 |
|
97 |
$sample = <<< HTML
|
98 |
-
<div id="wpfp_10ecd1d835d0db002906d6666d27a916" class="flowplayer no-brand is-splash fvp-play-button" data-embed="false" style="background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
99 |
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
100 |
</div>
|
101 |
<div class='fv-playlist-slider-wrapper'><div class="fp-playlist-external fv-playlist-design-2017 fp-playlist-horizontal fp-playlist-has-captions" rel="wpfp_10ecd1d835d0db002906d6666d27a916" style="width: 750px">
|
43 |
$output = apply_filters( 'the_content', $post->post_content );
|
44 |
|
45 |
$sample = <<< HTML
|
46 |
+
<div id="wpfp_10ecd1d835d0db002906d6666d27a916" class="flowplayer no-brand is-splash fvp-play-button" data-embed="false" style="max-width: 100%; background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
47 |
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
48 |
</div>
|
49 |
<div class="fp-playlist-external fv-playlist-design-2017 fp-playlist-horizontal fp-playlist-has-captions" rel="wpfp_10ecd1d835d0db002906d6666d27a916">
|
60 |
$output = apply_filters( 'the_content', $post->post_content );
|
61 |
|
62 |
$sample = <<< HTML
|
63 |
+
<div class="fp-playlist-vertical-wrapper"><div id="wpfp_10ecd1d835d0db002906d6666d27a916" class="flowplayer no-brand is-splash fvp-play-button" data-embed="false" style="max-width: 100%; background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
64 |
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
65 |
</div>
|
66 |
<div class="fp-playlist-external fv-playlist-design-2017 fp-playlist-vertical fp-playlist-has-captions" rel="wpfp_10ecd1d835d0db002906d6666d27a916">
|
78 |
$output = apply_filters( 'the_content', $post->post_content );
|
79 |
|
80 |
$sample = <<< HTML
|
81 |
+
<div id="wpfp_10ecd1d835d0db002906d6666d27a916" class="flowplayer no-brand is-splash fvp-play-button" data-embed="false" style="max-width: 100%; background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
82 |
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
83 |
<a class="fp-prev" title="prev"><</a><a class="fp-next" title="next">></a></div>
|
84 |
<div style="display: none" class="fp-playlist-external fv-playlist-design-2017 fp-playlist-has-captions" rel="wpfp_10ecd1d835d0db002906d6666d27a916">
|
95 |
$output = apply_filters( 'the_content', $post->post_content );
|
96 |
|
97 |
$sample = <<< HTML
|
98 |
+
<div id="wpfp_10ecd1d835d0db002906d6666d27a916" class="flowplayer no-brand is-splash fvp-play-button" data-embed="false" style="max-width: 100%; background-image: url(https://cdn.site.com/video1.jpg);" data-ratio="0.5625">
|
99 |
<div class="fp-ratio" style="padding-top: 56.25%"></div>
|
100 |
</div>
|
101 |
<div class='fv-playlist-slider-wrapper'><div class="fp-playlist-external fv-playlist-design-2017 fp-playlist-horizontal fp-playlist-has-captions" rel="wpfp_10ecd1d835d0db002906d6666d27a916" style="width: 750px">
|
test/integration/frontend/videoPositionSavingTest.php
CHANGED
@@ -68,7 +68,7 @@ final class FV_Player_videoPositionSavingTestCase extends FV_Player_Ajax_UnitTes
|
|
68 |
$post = get_post( $this->postID );
|
69 |
$output = apply_filters( 'the_content', $post->post_content );
|
70 |
|
71 |
-
$expect = "<div id=\"some-test-hash\" class=\"flowplayer no-brand is-splash fvp-play-button\" style=\"\" data-ratio=\"0.5625\" data-save-position=\"yes\">
|
72 |
<div class=\"fp-ratio\" style=\"padding-top: 56.25%\"></div>
|
73 |
<div class='fvp-share-bar'><ul class=\"fvp-sharing\">
|
74 |
<li><a class=\"sharing-facebook\" href=\"https://www.facebook.com/sharer/sharer.php?u=\" target=\"_blank\">Facebook</a></li>
|
@@ -125,7 +125,7 @@ final class FV_Player_videoPositionSavingTestCase extends FV_Player_Ajax_UnitTes
|
|
125 |
$post = get_post( $this->postID );
|
126 |
$output = apply_filters( 'the_content', $post->post_content );
|
127 |
|
128 |
-
$expect = "<div id=\"some-test-hash\" class=\"flowplayer no-brand is-splash fvp-play-button\" style=\"\" data-ratio=\"0.5625\" data-save-position=\"yes\">
|
129 |
<div class=\"fp-ratio\" style=\"padding-top: 56.25%\"></div>
|
130 |
<div class='fvp-share-bar'><ul class=\"fvp-sharing\">
|
131 |
<li><a class=\"sharing-facebook\" href=\"https://www.facebook.com/sharer/sharer.php?u=\" target=\"_blank\">Facebook</a></li>
|
68 |
$post = get_post( $this->postID );
|
69 |
$output = apply_filters( 'the_content', $post->post_content );
|
70 |
|
71 |
+
$expect = "<div id=\"some-test-hash\" class=\"flowplayer no-brand is-splash fvp-play-button\" style=\"max-width: 100%; \" data-ratio=\"0.5625\" data-save-position=\"yes\">
|
72 |
<div class=\"fp-ratio\" style=\"padding-top: 56.25%\"></div>
|
73 |
<div class='fvp-share-bar'><ul class=\"fvp-sharing\">
|
74 |
<li><a class=\"sharing-facebook\" href=\"https://www.facebook.com/sharer/sharer.php?u=\" target=\"_blank\">Facebook</a></li>
|
125 |
$post = get_post( $this->postID );
|
126 |
$output = apply_filters( 'the_content', $post->post_content );
|
127 |
|
128 |
+
$expect = "<div id=\"some-test-hash\" class=\"flowplayer no-brand is-splash fvp-play-button\" style=\"max-width: 100%; \" data-ratio=\"0.5625\" data-save-position=\"yes\">
|
129 |
<div class=\"fp-ratio\" style=\"padding-top: 56.25%\"></div>
|
130 |
<div class='fvp-share-bar'><ul class=\"fvp-sharing\">
|
131 |
<li><a class=\"sharing-facebook\" href=\"https://www.facebook.com/sharer/sharer.php?u=\" target=\"_blank\">Facebook</a></li>
|
test/integration/fv-player-ajax-unittest-case.php
CHANGED
@@ -17,7 +17,7 @@ abstract class FV_Player_Ajax_UnitTestCase extends WP_Ajax_UnitTestCase {
|
|
17 |
}
|
18 |
|
19 |
public function fix_newlines( $html ) {
|
20 |
-
$html = preg_replace( '/
|
21 |
$html = preg_replace( '~<input type="hidden" id="([^"]*?)nonce" name="([^"]*?)nonce" value="([^"]*?)" />~', '<input type="hidden" id="$1nonce" name="$2nonce" value="XYZ" />', $html);
|
22 |
$html = preg_replace( "~nonce: '([^']*?)'~", "nonce: 'XYZ'", $html);
|
23 |
|
17 |
}
|
18 |
|
19 |
public function fix_newlines( $html ) {
|
20 |
+
$html = preg_replace( '/"wpfp_[0-9a-z]+"/', '"some-test-hash"', $html);
|
21 |
$html = preg_replace( '~<input type="hidden" id="([^"]*?)nonce" name="([^"]*?)nonce" value="([^"]*?)" />~', '<input type="hidden" id="$1nonce" name="$2nonce" value="XYZ" />', $html);
|
22 |
$html = preg_replace( "~nonce: '([^']*?)'~", "nonce: 'XYZ'", $html);
|
23 |
|
test/integration/fv-player-unittest-case.php
CHANGED
@@ -12,7 +12,7 @@ abstract class FV_Player_UnitTestCase extends WP_UnitTestCase {
|
|
12 |
}
|
13 |
|
14 |
public function fix_newlines( $html ) {
|
15 |
-
$html = preg_replace( '/
|
16 |
$html = preg_replace( '~<input type="hidden" id="([^"]*?)nonce" name="([^"]*?)nonce" value="([^"]*?)" />~', '<input type="hidden" id="$1nonce" name="$2nonce" value="XYZ" />', $html);
|
17 |
$html = preg_replace( '~<input type="hidden" id="nonce_([^"]*?)" name="nonce_([^"]*?)" value="([^"]*?)" />~', '<input type="hidden" id="nonce_$1" name="nonce_$2" value="XYZ" />', $html);
|
18 |
$html = preg_replace( "~nonce: '([^']*?)'~", "nonce: 'XYZ'", $html);
|
@@ -34,7 +34,7 @@ abstract class FV_Player_UnitTestCase extends WP_UnitTestCase {
|
|
34 |
$html = preg_replace( '~\t~', '', $html );
|
35 |
|
36 |
// playlist in lightbox test
|
37 |
-
$html = preg_replace( "/(href|data-fv-lightbox)='#wpfp_[^']+'/", "$1='#some-test-hash'", $html);
|
38 |
$html = preg_replace( '~fv_flowplayer_[a-z0-9]+_lightbox_starter~', 'fv_flowplayer_XYZ_lightbox_starter', $html);
|
39 |
|
40 |
// tabbed playlist test
|
12 |
}
|
13 |
|
14 |
public function fix_newlines( $html ) {
|
15 |
+
$html = preg_replace( '/"wpfp_[0-9a-z]+"/', '"some-test-hash"', $html);
|
16 |
$html = preg_replace( '~<input type="hidden" id="([^"]*?)nonce" name="([^"]*?)nonce" value="([^"]*?)" />~', '<input type="hidden" id="$1nonce" name="$2nonce" value="XYZ" />', $html);
|
17 |
$html = preg_replace( '~<input type="hidden" id="nonce_([^"]*?)" name="nonce_([^"]*?)" value="([^"]*?)" />~', '<input type="hidden" id="nonce_$1" name="nonce_$2" value="XYZ" />', $html);
|
18 |
$html = preg_replace( "~nonce: '([^']*?)'~", "nonce: 'XYZ'", $html);
|
34 |
$html = preg_replace( '~\t~', '', $html );
|
35 |
|
36 |
// playlist in lightbox test
|
37 |
+
$html = preg_replace( "/(href|data-fv-lightbox|data-src)='#wpfp_[^']+'/", "$1='#some-test-hash'", $html);
|
38 |
$html = preg_replace( '~fv_flowplayer_[a-z0-9]+_lightbox_starter~', 'fv_flowplayer_XYZ_lightbox_starter', $html);
|
39 |
|
40 |
// tabbed playlist test
|
test/unit/controller/frontendTest.php
CHANGED
@@ -169,6 +169,7 @@ Localizing flowplayer with fv_flowplayer_translations = Array
|
|
169 |
[check_failed] => Admin: Check failed.
|
170 |
[playlist_current] => Now Playing
|
171 |
[video_issues] => Video Issues
|
|
|
172 |
[link_copied] => Video Link Copied to Clipboard
|
173 |
[embed_copied] => Embed Code Copied to Clipboard
|
174 |
[subtitles_disabled] => Subtitles disabled
|
169 |
[check_failed] => Admin: Check failed.
|
170 |
[playlist_current] => Now Playing
|
171 |
[video_issues] => Video Issues
|
172 |
+
[video_reload] => Video loading has stalled, click to reload
|
173 |
[link_copied] => Video Link Copied to Clipboard
|
174 |
[embed_copied] => Embed Code Copied to Clipboard
|
175 |
[subtitles_disabled] => Subtitles disabled
|
view/admin-beta.php
CHANGED
@@ -536,8 +536,7 @@ function fv_flowplayer_admin_integrations() {
|
|
536 |
<table class="form-table2">
|
537 |
|
538 |
<?php $fv_fp->_get_checkbox(__('Always use fixed size player', 'fv-wordpress-flowplayer'), 'fixed_size', __('Enable to force video size at cost of loosing the video responsiveness.', 'fv-wordpress-flowplayer') ); ?>
|
539 |
-
<?php
|
540 |
-
<?php $fv_fp->_get_checkbox(__('Disable saving of color settings into a static file', 'fv-wordpress-flowplayer'), 'css_disable', __('Normally the player CSS configuration is stored in wp-content/fv-player-custom/style-{blog_id}.css.', 'fv-wordpress-flowplayer'), __('We do this to avoid outputting CSS code into your site <head>. Don\'t edit this file though, as it will be overwritten by plugin update or saving its options!','fv-wordpress-flowplayer' )); ?>
|
541 |
<?php $fv_fp->_get_checkbox(__('Enable HLS.js', 'fv-wordpress-flowplayer'), 'hlsjs', __('Allows HLS playback in all modern browsers.', 'fv-wordpress-flowplayer'), __('HLS normally plays only on iOS, Mac Safari and new Android versions. FV Player increases the compatibility by using Flash engine for HLS. With this option you can go even further and modern browsers supporting MediaSource will play HLS even without Flash. Make sure you setup the required <a href="https://foliovision.com/player/video-hosting/hls#hls-js" target="_blank">CORS headers</a>.','fv-wordpress-flowplayer' )); ?>
|
542 |
|
543 |
<tr>
|
@@ -620,7 +619,6 @@ function fv_flowplayer_admin_integrations() {
|
|
620 |
</tr>-->
|
621 |
|
622 |
<?php $fv_fp->_get_checkbox(__('Use iframe embedding', 'fv-wordpress-flowplayer'), array( 'integrations', 'embed_iframe' ), __('Beta version! New kind of embedding which supports all the features in embedded player.', 'fv-wordpress-flowplayer') ); ?>
|
623 |
-
<?php if( $fv_fp->_get_option('old_code') ) $fv_fp->_get_checkbox(__('Use old code', 'fv-wordpress-flowplayer'), 'old_code', __('Check this option if your videos suddenly don\'t play and report the issues to <a href="https://foliovision.com/support">Foliovision Support Forums</a> please!', 'fv-wordpress-flowplayer') ); ?>
|
624 |
<?php $fv_fp->_get_checkbox(__('Add featured image automatically', 'fv-wordpress-flowplayer'), array( 'integrations', 'featured_img' ), __('If the featured image is not set, splash image of the first player will be used.', 'fv-wordpress-flowplayer') ); ?>
|
625 |
|
626 |
<?php do_action('fv_flowplayer_admin_integration_options_after'); ?>
|
@@ -1415,7 +1413,7 @@ function fv_flowplayer_admin_skin_subtitles() {
|
|
1415 |
<tr>
|
1416 |
<td><label for="subtitleSize"><?php _e('Font Size', 'fv-wordpress-flowplayer'); ?></label></td>
|
1417 |
<td><input id="subtitleSize" name="subtitleSize" title="<?php _e('Enter value in pixels', 'fv-wordpress-flowplayer'); ?>" type="text" value="<?php echo ( $fv_fp->_get_option('subtitleSize') ); ?>"
|
1418 |
-
data-fv-preview=".flowplayer .fp-captions { font-size: %val%px !important; }"/></td>
|
1419 |
</tr>
|
1420 |
<tr>
|
1421 |
<td><label for="subtitleBgColor"><?php _e('Background Color', 'fv-wordpress-flowplayer'); ?></label></td>
|
536 |
<table class="form-table2">
|
537 |
|
538 |
<?php $fv_fp->_get_checkbox(__('Always use fixed size player', 'fv-wordpress-flowplayer'), 'fixed_size', __('Enable to force video size at cost of loosing the video responsiveness.', 'fv-wordpress-flowplayer') ); ?>
|
539 |
+
<?php $fv_fp->_get_checkbox(__('Disable saving skin CSS to a static file', 'fv-wordpress-flowplayer'), 'css_disable', __('Normally the player CSS configuration is stored in wp-content/fv-player-custom/style-{blog_id}.css.', 'fv-wordpress-flowplayer'), __('We do this to avoid a big style tag in your site <head>. Don\'t edit this file though, as it will be overwritten by plugin update or saving its options!','fv-wordpress-flowplayer' )); ?>
|
|
|
540 |
<?php $fv_fp->_get_checkbox(__('Enable HLS.js', 'fv-wordpress-flowplayer'), 'hlsjs', __('Allows HLS playback in all modern browsers.', 'fv-wordpress-flowplayer'), __('HLS normally plays only on iOS, Mac Safari and new Android versions. FV Player increases the compatibility by using Flash engine for HLS. With this option you can go even further and modern browsers supporting MediaSource will play HLS even without Flash. Make sure you setup the required <a href="https://foliovision.com/player/video-hosting/hls#hls-js" target="_blank">CORS headers</a>.','fv-wordpress-flowplayer' )); ?>
|
541 |
|
542 |
<tr>
|
619 |
</tr>-->
|
620 |
|
621 |
<?php $fv_fp->_get_checkbox(__('Use iframe embedding', 'fv-wordpress-flowplayer'), array( 'integrations', 'embed_iframe' ), __('Beta version! New kind of embedding which supports all the features in embedded player.', 'fv-wordpress-flowplayer') ); ?>
|
|
|
622 |
<?php $fv_fp->_get_checkbox(__('Add featured image automatically', 'fv-wordpress-flowplayer'), array( 'integrations', 'featured_img' ), __('If the featured image is not set, splash image of the first player will be used.', 'fv-wordpress-flowplayer') ); ?>
|
623 |
|
624 |
<?php do_action('fv_flowplayer_admin_integration_options_after'); ?>
|
1413 |
<tr>
|
1414 |
<td><label for="subtitleSize"><?php _e('Font Size', 'fv-wordpress-flowplayer'); ?></label></td>
|
1415 |
<td><input id="subtitleSize" name="subtitleSize" title="<?php _e('Enter value in pixels', 'fv-wordpress-flowplayer'); ?>" type="text" value="<?php echo ( $fv_fp->_get_option('subtitleSize') ); ?>"
|
1416 |
+
data-fv-preview=".flowplayer .fp-captions p { font-size: %val%px !important; }"/></td>
|
1417 |
</tr>
|
1418 |
<tr>
|
1419 |
<td><label for="subtitleBgColor"><?php _e('Background Color', 'fv-wordpress-flowplayer'); ?></label></td>
|
view/admin.php
CHANGED
@@ -532,7 +532,7 @@ function fv_flowplayer_admin_integrations() {
|
|
532 |
|
533 |
<?php $fv_fp->_get_checkbox(__('Always use fixed size player', 'fv-wordpress-flowplayer'), 'fixed_size', __('Enable to force video size at cost of loosing the video responsiveness.', 'fv-wordpress-flowplayer') ); ?>
|
534 |
<?php if( $fv_fp->_get_option('cbox_compatibility') ) $fv_fp->_get_checkbox(__('Colorbox Compatibility', 'fv-wordpress-flowplayer'), 'cbox_compatibility', __('Enable if your theme is using colorbox lightbox to show content and clones the HTML content into it.', 'fv-wordpress-flowplayer') ); ?>
|
535 |
-
<?php $fv_fp->_get_checkbox(__('Disable saving
|
536 |
<?php $fv_fp->_get_checkbox(__('Enable HLS.js', 'fv-wordpress-flowplayer'), 'hlsjs', __('Allows HLS playback in all modern browsers.', 'fv-wordpress-flowplayer'), __('HLS normally plays only on iOS, Mac Safari and new Android versions. FV Player increases the compatibility by using Flash engine for HLS. With this option you can go even further and modern browsers supporting MediaSource will play HLS even without Flash. Make sure you setup the required CORS headers.','fv-wordpress-flowplayer' )); ?>
|
537 |
|
538 |
<tr>
|
532 |
|
533 |
<?php $fv_fp->_get_checkbox(__('Always use fixed size player', 'fv-wordpress-flowplayer'), 'fixed_size', __('Enable to force video size at cost of loosing the video responsiveness.', 'fv-wordpress-flowplayer') ); ?>
|
534 |
<?php if( $fv_fp->_get_option('cbox_compatibility') ) $fv_fp->_get_checkbox(__('Colorbox Compatibility', 'fv-wordpress-flowplayer'), 'cbox_compatibility', __('Enable if your theme is using colorbox lightbox to show content and clones the HTML content into it.', 'fv-wordpress-flowplayer') ); ?>
|
535 |
+
<?php $fv_fp->_get_checkbox(__('Disable saving skin CSS to a static file', 'fv-wordpress-flowplayer'), 'css_disable', __('Normally the player CSS configuration is stored in wp-content/fv-player-custom/style-{blog_id}.css.', 'fv-wordpress-flowplayer'), __('We do this to avoid a big style tag in your site <head>. Don\'t edit this file though, as it will be overwritten by plugin update or saving its options!','fv-wordpress-flowplayer' )); ?>
|
536 |
<?php $fv_fp->_get_checkbox(__('Enable HLS.js', 'fv-wordpress-flowplayer'), 'hlsjs', __('Allows HLS playback in all modern browsers.', 'fv-wordpress-flowplayer'), __('HLS normally plays only on iOS, Mac Safari and new Android versions. FV Player increases the compatibility by using Flash engine for HLS. With this option you can go even further and modern browsers supporting MediaSource will play HLS even without Flash. Make sure you setup the required CORS headers.','fv-wordpress-flowplayer' )); ?>
|
537 |
|
538 |
<tr>
|