FV Flowplayer Video Player - Version 6.0.5.24

Version Description

  • 2017/05/09 =

  • Amazon S3 - adding support for new AWS Regions - US East (Ohio), Asia Pacific (Mumbai) and EU (London).

  • End Popup - making sure it works on the last item in playlist only

  • Speed control - making sure it works for Android when using Firefox

  • Vimeo (Pro) - showing a notice to install Firefox if user has playback issues due to TLS 1.2 incompatibility on Android 4 and old OS X. More details: https://foliovision.com/2017/05/issues-with-vimeo-on-android

Download this release

Release Info

Developer FolioVision
Plugin Icon 128x128 FV Flowplayer Video Player
Version 6.0.5.24
Comparing to
See all releases

Code changes from version 2.4.2 to 6.0.5.24

Files changed (101) hide show
  1. controller/backend.php +432 -213
  2. controller/frontend.php +136 -32
  3. controller/shortcodes.php +25 -6
  4. css/admin.css +58 -3
  5. css/colorbox.css +7 -2
  6. css/flowplayer.css +605 -185
  7. css/fonts/fpicons.eot +0 -0
  8. css/fonts/fpicons.svg +23 -0
  9. css/fonts/fpicons.ttf +0 -0
  10. css/fonts/fpicons.woff +0 -0
  11. css/img/black-x2.png +0 -0
  12. css/img/black.png +0 -0
  13. css/img/black@x2.png +0 -0
  14. css/img/black_rtl-x2.png +0 -0
  15. css/img/black_rtl.png +0 -0
  16. css/img/black_rtl@x2.png +0 -0
  17. css/img/closelabel-x2.png +0 -0
  18. css/img/closelabel.png +0 -0
  19. css/img/controls.png +0 -0
  20. css/img/flowplayer-2x.png +0 -0
  21. css/img/flowplayer@2x.png +0 -0
  22. css/img/flp-share-icons-x2.png +0 -0
  23. css/img/flp-share-icons.png +0 -0
  24. css/img/loading.gif +0 -0
  25. css/img/nextlabel.gif +0 -0
  26. css/img/no_play_white@x2.png +0 -0
  27. css/img/play_black-x2.png +0 -0
  28. css/img/play_black.png +0 -0
  29. css/img/play_black@x2.png +0 -0
  30. css/img/play_black_rtl-x2.png +0 -0
  31. css/img/play_black_rtl.png +0 -0
  32. css/img/play_black_rtl@x2.png +0 -0
  33. css/img/play_white-x2.png +0 -0
  34. css/img/play_white.png +0 -0
  35. css/img/play_white@x2.png +0 -0
  36. css/img/play_white_rtl-x2.png +0 -0
  37. css/img/play_white_rtl.png +0 -0
  38. css/img/play_white_rtl@x2.png +0 -0
  39. css/img/playful_black-x2.png +0 -0
  40. css/img/playful_black.png +0 -0
  41. css/img/playful_black@x2.png +0 -0
  42. css/img/playful_black_rtl-x2.png +0 -0
  43. css/img/playful_black_rtl.png +0 -0
  44. css/img/playful_black_rtl@x2.png +0 -0
  45. css/img/playful_white-x2.png +0 -0
  46. css/img/playful_white.png +0 -0
  47. css/img/playful_white@x2.png +0 -0
  48. css/img/playful_white_rtl-x2.png +0 -0
  49. css/img/playful_white_rtl.png +0 -0
  50. css/img/playful_white_rtl@x2.png +0 -0
  51. css/img/playlist-buttons.png +0 -0
  52. css/img/prevlabel.gif +0 -0
  53. css/img/white-x2.png +0 -0
  54. css/img/white.png +0 -0
  55. css/img/white@x2.png +0 -0
  56. css/img/white_rtl-x2.png +0 -0
  57. css/img/white_rtl.png +0 -0
  58. css/img/white_rtl@x2.png +0 -0
  59. css/license.css +87 -8
  60. css/shortcode-editor.css +103 -0
  61. flowplayer.php +63 -53
  62. flowplayer/embed.min.js +1 -3
  63. flowplayer/flowplayer.dashjs.min.js +41 -0
  64. flowplayer/flowplayer.hlsjs.min.js +31 -0
  65. flowplayer/flowplayer.swf +0 -0
  66. flowplayer/flowplayerhls.swf +0 -0
  67. flowplayer/fv-flowplayer.min.js +891 -321
  68. images/icon-256x256.png +0 -0
  69. images/icon.png +0 -0
  70. images/icon@x2.png +0 -0
  71. images/test-subtitles.vtt +176 -0
  72. includes/extra-functions.php +36 -14
  73. includes/fp-api.php +1 -3
  74. js/admin.js +47 -0
  75. js/jquery.colorbox-min.js +1 -1
  76. js/lightbox.js +262 -0
  77. js/shortcode-editor.js +923 -198
  78. js/shortcode-editor.old.js +824 -0
  79. languages/fv-wordpress-flowplayer-cs_CZ.mo +0 -0
  80. languages/fv-wordpress-flowplayer-cs_CZ.po +1687 -0
  81. languages/fv-wordpress-flowplayer-de_DE.mo +0 -0
  82. languages/fv-wordpress-flowplayer-de_DE.po +2037 -0
  83. languages/fv-wordpress-flowplayer-es_ES.mo +0 -0
  84. languages/fv-wordpress-flowplayer-es_ES.po +1636 -0
  85. languages/fv-wordpress-flowplayer-sk_SK.mo +0 -0
  86. languages/fv-wordpress-flowplayer-sk_SK.po +1902 -0
  87. languages/fv_flowplayer-sk_SK.mo +0 -0
  88. languages/fv_flowplayer-sk_SK.po +0 -410
  89. models/checker.php +55 -11
  90. models/custom-videos.php +467 -0
  91. models/facebook-share.php +86 -0
  92. models/flowplayer-frontend.php +473 -256
  93. models/flowplayer.php +721 -170
  94. models/lightbox.php +419 -0
  95. models/users-ultra-pro.php +127 -0
  96. models/widget.php +125 -0
  97. readme.txt +518 -102
  98. screenshot-3.png +0 -0
  99. view/admin.php +1055 -515
  100. view/wizard.old.php +369 -0
  101. view/wizard.php +419 -245
controller/backend.php CHANGED
@@ -20,14 +20,15 @@
20
add_action('wp_ajax_fv_wp_flowplayer_support_mail', 'fv_wp_flowplayer_support_mail');
21
add_action('wp_ajax_fv_wp_flowplayer_activate_extension', 'fv_wp_flowplayer_activate_extension');
22
add_action('wp_ajax_fv_wp_flowplayer_check_template', 'fv_wp_flowplayer_check_template');
23
- add_action('wp_ajax_fv_wp_flowplayer_check_files', 'fv_wp_flowplayer_check_files');
24
25
add_action('admin_head', 'flowplayer_admin_head');
26
add_action('admin_footer', 'flowplayer_admin_footer');
27
add_action('admin_print_footer_scripts', 'flowplayer_admin_footer_wp_js_restore', 999999 );
28
29
add_action('admin_menu', 'flowplayer_admin');
30
- add_action('media_buttons', 'flowplayer_add_media_button', 30);
31
add_action('media_upload_fvplayer_video', '__return_false'); // keep for compatibility!
32
33
@@ -36,12 +37,14 @@ add_action( 'wp_ajax_fv_foliopress_ajax_pointers', 'fv_wp_flowplayer_pointers_aj
36
37
38
39
- add_action( 'admin_enqueue_scripts', 'fv_wp_flowplayer_admin_enqueue_scripts' );
40
add_action( 'edit_form_after_editor', 'fv_wp_flowplayer_edit_form_after_editor' );
41
42
add_action( 'after_plugin_row', 'fv_wp_flowplayer_after_plugin_row', 10, 3 );
43
44
- add_action( 'save_post', 'fv_wp_flowplayer_save_post'/*, 9999*/ );
45
46
add_filter( 'get_user_option_closedpostboxes_fv_flowplayer_settings', 'fv_wp_flowplayer_closed_meta_boxes' );
47
@@ -57,8 +60,116 @@ add_action('wp_ajax_flowplayer_conversion_script', 'flowplayer_conversion_script
57
add_action('admin_notices', 'fv_wp_flowplayer_admin_notice');
58
59
60
function flowplayer_activate() {
61
-
62
}
63
64
@@ -121,17 +232,9 @@ function flowplayer_admin_footer_wp_js_restore() {
121
* Administrator environment function.
122
*/
123
function flowplayer_admin () {
124
- // if we are in administrator environment
125
- if (function_exists('add_submenu_page')) {
126
- add_options_page(
127
- 'FV Wordpress Flowplayer',
128
- 'FV Wordpress Flowplayer',
129
- 'manage_options',
130
- 'fvplayer',
131
- 'flowplayer_page'
132
- );
133
- }
134
-
135
}
136
137
@@ -186,11 +289,11 @@ function flowplayer_add_media_button() {
186
if( stripos($plugin,'foliopress-wysiwyg') !== FALSE )
187
$found = true;
188
}
189
- $button_tip = 'Insert a Flash Video Player';
190
$wizard_url = 'media-upload.php?post_id='.$post->ID.'&type=fv-wp-flowplayer';
191
- $button_src = FV_FP_RELATIVE_PATH.'/images/icon.png';
192
- $img = (!$found) ? '<img src="' . $button_src . '" alt="' . $button_tip . '" />' : '';
193
- echo '<a title="Add FV WP Flowplayer" href="#" class="fv-wordpress-flowplayer-button" >'.$img.'</a>';
194
}
195
196
@@ -250,6 +353,22 @@ function fv_wp_flowplayer_admin_notice() {
250
echo "</p></div>";
251
}
252
253
/*if( isset($_GET['page']) && $_GET['page'] == 'backend.php' ) {
254
$options = get_option( 'fvwpflowplayer' );
255
if( $options['key'] == 'false' ) {
@@ -258,34 +377,34 @@ function fv_wp_flowplayer_admin_notice() {
258
echo "</p></div>";
259
}
260
}*/
261
-
262
- if( isset($_GET['fv-licensing']) && $_GET['fv-licensing'] == "check" ){
263
- echo '<div class="updated inline">
264
- <p>Thank you for purchase. Your license will be renewed in couple of minutes.<br/>
265
- Please make sure you upgrade <strong>FV Player Pro</strong> and <strong>FV Player VAST</strong> if you are using it.</p>
266
- </div>';
267
- }
268
}
269
270
271
- function fv_wp_flowplayer_admin_enqueue_scripts( $page ) {
272
if( $page !== 'post.php' && $page !== 'post-new.php' ) {
273
return;
274
}
275
276
global $fv_wp_flowplayer_ver;
277
278
wp_register_script('fvwpflowplayer-domwindow', flowplayer::get_plugin_url().'/js/jquery.colorbox-min.js',array('jquery'), $fv_wp_flowplayer_ver );
279
wp_enqueue_script('fvwpflowplayer-domwindow');
280
281
- wp_register_script('fvwpflowplayer-shortcode-editor', flowplayer::get_plugin_url().'/js/shortcode-editor.js',array('jquery'), $fv_wp_flowplayer_ver );
282
- wp_enqueue_script('fvwpflowplayer-shortcode-editor');
283
-
284
wp_register_style('fvwpflowplayer-domwindow-css', flowplayer::get_plugin_url().'/css/colorbox.css','','1.0','screen');
285
- wp_enqueue_style('fvwpflowplayer-domwindow-css');
286
}
287
288
-
289
/*
290
Trick media uploader to show video only, while making sure we use our custom type; Also save options
291
*/
@@ -300,6 +419,8 @@ function fv_wp_flowplayer_admin_init() {
300
}
301
302
if( isset($_POST['fv-wp-flowplayer-submit']) ) {
303
global $fv_fp;
304
if( method_exists($fv_fp,'_set_conf') ) {
305
$fv_fp->_set_conf();
@@ -307,14 +428,13 @@ function fv_wp_flowplayer_admin_init() {
307
echo 'Error saving FV Flowplayer options.';
308
}
309
}
310
-
311
- if( isset($_GET['fv-licensing']) && $_GET['fv-licensing'] == "check" ){
312
delete_option("fv_wordpress_flowplayer_persistent_notices");
313
314
- //license will expire in one minute
315
- fv_wp_flowplayer_change_transient_expiration("fv_flowplayer_license",60);
316
- fv_wp_flowplayer_delete_extensions_transients(60);
317
- }
318
319
global $fv_fp;
320
global $fv_wp_flowplayer_ver, $fv_wp_flowplayer_core_ver;
@@ -328,7 +448,8 @@ function fv_wp_flowplayer_admin_init() {
328
329
$version = get_option( 'fvwpflowplayer_core_ver' );
330
if( version_compare( $fv_wp_flowplayer_core_ver, $version ) == 1 ) {
331
- fv_wp_flowplayer_admin_key_update();
332
}
333
}
334
@@ -340,11 +461,11 @@ function fv_wp_flowplayer_admin_init() {
340
$fv_fp->pointer_boxes['fv_flowplayer_video_checker_service'] = array(
341
'id' => '#wp-admin-bar-new-content',
342
'pointerClass' => 'fv_flowplayer_video_checker_service',
343
- 'heading' => __('FV Player Video Checker', 'fv_flowplayer'),
344
- 'content' => __("<p>FV Player includes a free video checker which will check your videos for any encoding errors and helps ensure smooth playback of all your videos. To work its magic, our video checker must contact our server.</p><p>Would you like to enable the video encoding checker?</p>", 'fv_flowplayer'),
345
'position' => array( 'edge' => 'top', 'align' => 'center' ),
346
- 'button1' => __('Allow', 'fv_flowplayer'),
347
- 'button2' => __('Disable the video checker', 'fv_flowplayer')
348
);
349
} else {
350
if(
@@ -356,30 +477,73 @@ function fv_wp_flowplayer_admin_init() {
356
'id' => '#wp-admin-bar-new-content',
357
'pointerClass' => 'fv_flowplayer_key_automatic',
358
'pointerWidth' => 340,
359
- 'heading' => __('FV Flowplayer License Update', 'fv_flowplayer'),
360
- 'content' => __('New version of FV Flowplayer core has been installed for your licensed website. Please accept the automatic license key updating (connects to Foliovision servers) or update the key manually by loggin into your Foliovision account.', 'fv_flowplayer'),
361
'position' => array( 'edge' => 'top', 'align' => 'center' ),
362
- 'button1' => __('Always auto-update', 'fv_flowplayer'),
363
- 'button2' => __("I'll update it manually", 'fv_flowplayer')
364
);
365
} else if( version_compare( $fv_wp_flowplayer_core_ver, get_option('fvwpflowplayer_core_ver') ) !== 0 && preg_match( '!^\$\d+!', $fv_fp->conf['key'] ) == 0 ) {
366
update_option( 'fvwpflowplayer_core_ver', $fv_wp_flowplayer_core_ver );
367
}
368
}
369
370
$aOptions = get_option( 'fvwpflowplayer' );
371
- if( !isset($aOptions['version']) /*|| version_compare( $fv_wp_flowplayer_ver, $aOptions['version'] )*/ ) {
372
- update_option( 'fv_wordpress_flowplayer_deferred_notices', 'FV Flowplayer upgraded - please click "Check template" and "Check videos" for automated check of your site at <a href="'.site_url().'/wp-admin/options-general.php?page=fvplayer">the settings page</a> for automated checks!' );
373
374
$aOptions['version'] = $fv_wp_flowplayer_ver;
375
update_option( 'fvwpflowplayer', $aOptions );
376
$fv_fp->css_writeout();
377
}
378
379
if( isset($_GET['page']) && $_GET['page'] == 'fvplayer' ) {
380
wp_enqueue_script('common');
381
wp_enqueue_script('wp-lists');
382
wp_enqueue_script('postbox');
383
}
384
385
@@ -395,18 +559,19 @@ function fv_wp_flowplayer_admin_init() {
395
396
$aCheck = get_transient( 'fv_flowplayer_license' );
397
$aInstalled = get_option('fv_flowplayer_extension_install');
398
- if(
399
- isset($aCheck->valid) && $aCheck->valid &&
400
- (
401
- !isset($aInstalled['fv_player_pro']) ||
402
- ( isset($_REQUEST['nonce_fv_player_pro_install']) && wp_verify_nonce( $_REQUEST['nonce_fv_player_pro_install'], 'fv_player_pro_install') )
403
- )
404
- ) {
405
- fv_wp_flowplayer_install_extension('fv_player_pro');
406
- }
407
408
- }
409
- }
410
411
412
function fv_wp_flowplayer_admin_key_update() {
@@ -417,9 +582,16 @@ function fv_wp_flowplayer_admin_key_update() {
417
if( $data->domain && $data->key && stripos( home_url(), $data->domain ) !== false ) {
418
$fv_fp->conf['key'] = $data->key;
419
update_option( 'fvwpflowplayer', $fv_fp->conf );
420
- update_option( 'fvwpflowplayer_core_ver', $fv_wp_flowplayer_core_ver );
421
return true;
422
}
423
} else {
424
update_option( 'fv_wordpress_flowplayer_deferred_notices', 'FV Flowplayer License upgrade failed - please check if you are running the plugin on your licensed domain.' );
425
update_option( 'fvwpflowplayer_core_ver', $fv_wp_flowplayer_core_ver );
@@ -433,21 +605,90 @@ function fv_wp_flowplayer_license_check( $aArgs ) {
433
434
$args = array(
435
'body' => array( 'plugin' => 'fv-wordpress-flowplayer', 'version' => $fv_wp_flowplayer_ver, 'core_ver' => $fv_wp_flowplayer_core_ver, 'type' => home_url(), 'action' => $aArgs['action'], 'admin-url' => admin_url() ),
436
- 'timeout' => 20,
437
'user-agent' => 'fv-wordpress-flowplayer-'.$fv_wp_flowplayer_ver.' ('.$fv_wp_flowplayer_core_ver.')'
438
);
439
- $resp = wp_remote_post( 'http://foliovision.com/?fv_remote=true', $args );
440
441
- if( isset($resp['body']) && $resp['body'] && $data = json_decode( preg_replace( '~[\s\S]*?<FVFLOWPLAYER>(.*?)</FVFLOWPLAYER>[\s\S]*?~', '$1', $resp['body'] ) ) ) {
442
return $data;
443
- } else {
444
- return false;
445
}
446
}
447
448
449
function fv_wp_flowplayer_edit_form_after_editor( ) {
450
- include dirname( __FILE__ ) . '/../view/wizard.php';
451
}
452
453
@@ -660,7 +901,7 @@ function fv_wp_flowplayer_check_template() {
660
$errors[] = 'html5.js not found in your template! Videos might not play in old browsers, like Internet Explorer 6-8. Read our instrutions <a href="https://foliovision.com/player/installation#html5js">here</a>.';
661
}
662
663
- $ok[] = 'Template checker has changed. Just open any of your videos on your site and see if you get a red warning message about JavaScript not working.';
664
665
$response['body'] = preg_replace( 'lt;!--[\s\S]+?-->#x27;, '', $response['body'] ); // handle HTML comments
666
@@ -675,7 +916,7 @@ function fv_wp_flowplayer_check_template() {
675
if( $check == - 1 ) {
676
$errors[] = "Flowplayer script <code>$flowplayer_script</code> is old version and won't play. You need to get rid of this script.";
677
} else if( $check == 1 ) {
678
- $ok[] = "FV Flowplayer script found: <code>$flowplayer_script</code>!";
679
$fv_flowplayer_pos = strpos( $response['body'], $flowplayer_script );
680
}
681
}
@@ -685,20 +926,11 @@ function fv_wp_flowplayer_check_template() {
685
686
687
// check jQuery scripts
688
- preg_match_all( '!<script[^>]*?src=[\'"]([^\'"]*?jquery[0-9.-]*?(?:\.min)?\.js[^\'"]*?)[\'"][^>]*?>\s*?</script>!', $response['body'], $jquery_scripts );
689
if( count($jquery_scripts[1]) > 0 ) {
690
foreach( $jquery_scripts[1] AS $jkey => $jquery_script ) {
691
- $check = fv_wp_flowplayer_check_jquery_version( $jquery_script, $jquery_scripts[1], $jkey );
692
- if( $check == - 1 ) {
693
- $errors[] = "jQuery library <code>$jquery_script</code> is old version and might not be compatible with Flowplayer.";
694
- } else if( $check == 1 ) {
695
- $ok[] = "jQuery library 1.7.1+ found: <code>$jquery_script</code>!";
696
- $jquery_pos = strpos( $response['body'], $jquery_script );
697
- } else if( $check == 2 ) {
698
- // nothing
699
- } else {
700
- $errors[] = "jQuery library <code>$jquery_script</code> found, but unable to check version, please make sure it's at least 1.7.1.";
701
- }
702
}
703
704
if( count($jquery_scripts[1]) > 1 ) {
@@ -720,7 +952,24 @@ function fv_wp_flowplayer_check_template() {
720
}
721
722
die('-1');
723
- }
724
725
726
function fv_wp_flowplayer_array_search_by_item( $find, $in_array, &$found, $like = false ) {
@@ -754,8 +1003,7 @@ function fv_wp_flowplayer_array_search_by_item( $find, $in_array, &$found, $like
754
function fv_wp_flowplayer_support_mail() {
755
if( isset( $_POST['notice'] ) && stripos( $_SERVER['HTTP_REFERER'], home_url() ) === 0 ) {
756
757
- global $current_user;
758
- get_currentuserinfo();
759
760
$content = '<p>User: '.$current_user->display_name." (".$current_user->user_email.")</p>\n";
761
$content .= '<p>User Agent: '.$_SERVER['HTTP_USER_AGENT']."</p>\n";
@@ -800,7 +1048,7 @@ function fv_wp_flowplayer_support_mail_phpmailer_init( $phpmailer ) {
800
801
function fv_wp_flowplayer_closed_meta_boxes( $closed ) {
802
if ( false === $closed )
803
- $closed = array( 'fv_flowplayer_amazon_options', 'fv_flowplayer_interface_options', 'fv_flowplayer_default_options', 'fv_flowplayer_ads', 'fv_flowplayer_skin' );
804
805
return $closed;
806
}
@@ -837,7 +1085,24 @@ function fv_wp_flowplayer_pointers_ajax() {
837
update_option( 'fvwpflowplayer', $conf );
838
}
839
die();
840
}
841
}
842
843
@@ -870,6 +1135,9 @@ function fv_wp_flowplayer_install_extension( $plugin_package = 'fv_player_pro' )
870
$aPluginInfo = get_transient( 'fv_flowplayer_license' );
871
$plugin_basename = $aPluginInfo->{$plugin_package}->slug;
872
$download_url = $aPluginInfo->{$plugin_package}->url;
873
874
$url = wp_nonce_url( site_url().'/wp-admin/options-general.php?page=fvplayer', 'fv_player_pro_install', 'nonce_fv_player_pro_install' );
875
@@ -896,7 +1164,8 @@ function fv_wp_flowplayer_install_extension( $plugin_package = 'fv_player_pro' )
896
897
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
898
899
- if( !is_plugin_active($plugin_basename) || is_wp_error(validate_plugin($plugin_basename)) ) {
900
echo '<div style="display: none;">';
901
$objInstaller = new Plugin_Upgrader();
902
$objInstaller->install( $download_url );
@@ -904,7 +1173,8 @@ function fv_wp_flowplayer_install_extension( $plugin_package = 'fv_player_pro' )
904
wp_cache_flush();
905
906
if ( is_wp_error( $objInstaller->skin->result ) ) {
907
- update_option( 'fv_wordpress_flowplayer_deferred_notices', 'FV Flowplayer Pro extension install failed - '.$objInstaller->skin->result->get_error_message() );
908
$bResult = false;
909
} else {
910
if ( $objInstaller->plugin_info() ) {
@@ -914,15 +1184,41 @@ function fv_wp_flowplayer_install_extension( $plugin_package = 'fv_player_pro' )
914
915
$activate = activate_plugin( $plugin_basename );
916
if ( is_wp_error( $activate ) ) {
917
- update_option( 'fv_wordpress_flowplayer_deferred_notices', 'FV Flowplayer Pro extension install failed - '.$activate->get_error_message() );
918
$bResult = false;
919
}
920
}
921
}
922
923
if( !isset($bResult) ) {
924
if( !isset($_GET['page']) || strcmp($_GET['page'],'fvplayer') != 0 ) {
925
- update_option( 'fv_wordpress_flowplayer_deferred_notices', 'FV Flowplayer Pro extension installed - check the new <a href="'.site_url().'/wp-admin/options-general.php?page=fvplayer#fv_player_pro">Pro features!</a>!' );
926
}
927
$bResult = true;
928
}
@@ -971,18 +1267,6 @@ function fv_wp_flowplayer_plugin_action_links($links, $file) {
971
}
972
973
974
- function fv_flowplayer_admin_block_update_now() {
975
- $aCheck = get_transient( 'fv_flowplayer_license' );
976
- if( $aCheck && isset($aCheck->expired) && $aCheck->expired ) :
977
- ?>
978
- <script>
979
- jQuery(".update-link [href*='fv-wordpress-flowplayer']").click( function() { return confirm('Your FV Flowplayer license is expired.\n\nThanks for your early support for FV Player Pro. To enjoy the new features of Flowplayer 6 core, please renew your license. If proceed with the upgrade without renewing your license, you will lose your custom logo and your pro features.') });
980
- </script>
981
- <?php
982
- endif;
983
- }
984
-
985
-
986
function fv_flowplayer_admin_scripts() {
987
if (isset($_GET['page']) && $_GET['page'] == 'fvplayer') {
988
wp_enqueue_media();
@@ -991,143 +1275,78 @@ function fv_flowplayer_admin_scripts() {
991
992
//search for plugin path with {slug}.php
993
function fv_flowplayer_get_extension_path( $slug ){
994
- $plugin_slugs = get_transient('plugin_slugs');
995
- if( !$plugin_slugs )
996
return false;
997
998
- foreach( $plugin_slugs as $item ){
999
if( stripos($item,$slug.'.php') !== false )
1000
return $item;
1001
}
1002
1003
return false;
1004
}
1005
1006
1007
- add_action( "after_plugin_row_fv-wordpress-flowplayer/flowplayer.php", 'fv_flowplayer_after_plugin_row', 10, 2 );
1008
- add_filter( 'pre_set_site_transient_update_plugins', 'fv_flowplayer_check_plugin_update' );
1009
- add_action( 'admin_init', 'fv_flowplayer_allow_update' );
1010
1011
- function fv_flowplayer_after_plugin_row( $file, $plugin_data ){
1012
- if( !flowplayer::is_licensed() ) {
1013
- return;
1014
- }
1015
-
1016
- $update_row = get_option('fvwpflowplayer_update_row');
1017
1018
- $aCheck = get_transient( 'fv_flowplayer_license' );
1019
- if( isset($aCheck->valid) && $aCheck->valid ){
1020
- return;
1021
- }
1022
-
1023
- if( $update_row != 'removed' ){
1024
- return;
1025
- }
1026
-
1027
- global $fv_player_pro_form;
1028
- if( isset($fv_player_pro_form) ) return;
1029
-
1030
- if ( is_network_admin() || !is_multisite() ) {
1031
- $wp_list_table = _get_list_table('WP_Plugins_List_Table');
1032
- $active_class = ( is_plugin_active( $plugin_data['plugin'] ) ) ? ' active' : '';
1033
- echo '<tr class="plugin-update-tr' . $active_class . '" id="fv-wordpress-flowplayer-update" data-slug="fv-wordpress-flowplayer"><td colspan="' . esc_attr( $wp_list_table->get_column_count() ) . '" class="plugin-update colspanchange"><div class="update-message">';
1034
-
1035
- global $fv_flowplayer_form;
1036
- preg_match( '~<form[\s\S]*?</form>~', $aCheck->message, $fv_flowplayer_form );
1037
- $fv_flowplayer_form = $fv_flowplayer_form[0];
1038
- preg_match( '~<[^>]*?type="submit"[^>]*?>~', $aCheck->message, $button );
1039
- $aCheck->message = preg_replace( '~<form[\s\S]*?</form>~', $button[0], $aCheck->message );
1040
- echo $aCheck->message;
1041
-
1042
- add_filter( 'admin_footer', 'fv_flowplayer_update_footer_html' );
1043
-
1044
- echo '<a href="'.admin_url('plugins.php?fv_flowplayer_allow_update=1').'">Click here</a> to allow upgrade anyway.';
1045
-
1046
- echo '</div></td></tr>';
1047
-
1048
- echo '<script type="text/javascript">';
1049
- echo "jQuery('#fv-wordpress-flowplayer-update').find('input[type=submit]').click( function() { jQuery('.fv_licensing_form').find('input[type=submit]').click(); return false;} );";
1050
- echo 'jQuery(document).ready( function(){jQuery("#fv-wordpress-flowplayer").addClass("update"); });';
1051
- echo '</script>';
1052
- }
1053
}
1054
1055
-
1056
-
1057
-
1058
- function fv_flowplayer_check_plugin_update( $data ){
1059
- if( !flowplayer::is_licensed() ) {
1060
- return $data;
1061
- }
1062
-
1063
- $update_row = get_option('fvwpflowplayer_update_row');
1064
-
1065
- $aCheck = get_transient( 'fv_flowplayer_license' );
1066
- if( isset($aCheck->valid) && $aCheck->valid ){
1067
- return $data;
1068
- }
1069
-
1070
- if( $update_row == 'allowed' ){
1071
- return $data;
1072
- }
1073
-
1074
- if( isset($data->response['fv-wordpress-flowplayer/flowplayer.php']) ){
1075
-
1076
- global $fv_wp_flowplayer_ver;
1077
- $old_version = substr($fv_wp_flowplayer_ver,0,1);
1078
- $new_version = substr($data->response['fv-wordpress-flowplayer/flowplayer.php']->new_version,0,1);
1079
-
1080
- if( $old_version == '2' && $new_version == '6'){
1081
- unset($data->response['fv-wordpress-flowplayer/flowplayer.php']);
1082
- update_option('fvwpflowplayer_update_row', 'removed');
1083
- }
1084
- }
1085
-
1086
- return $data;
1087
}
1088
1089
1090
1091
1092
- function fv_flowplayer_allow_update(){
1093
- if( isset($_GET['fv_flowplayer_allow_update']) ){
1094
- update_option('fvwpflowplayer_update_row', 'allowed');
1095
- delete_site_transient('update_plugins');
1096
-
1097
- wp_redirect( admin_url('plugins.php') );
1098
- }
1099
- }
1100
1101
1102
-
1103
-
1104
- function fv_wp_flowplayer_change_transient_expiration( $transient_name, $time ){
1105
- $transient_val = get_transient($transient_name);
1106
- if( $transient_val ){
1107
- set_transient($transient_name,$transient_val,$time);
1108
- return true;
1109
}
1110
- return false;
1111
- }
1112
-
1113
-
1114
- function fv_wp_flowplayer_delete_extensions_transients( $delete_delay = false ){
1115
- if( !$delete_delay ){
1116
- delete_transient("fv-player-pro_license");
1117
- delete_transient("fv-player-vast_license");
1118
- }
1119
- else{
1120
- fv_wp_flowplayer_change_transient_expiration("fv-player-pro_license",$delete_delay);
1121
- fv_wp_flowplayer_change_transient_expiration("fv-player-vast_license",$delete_delay);
1122
}
1123
}
1124
1125
1126
1127
1128
- function fv_flowplayer_update_footer_html() {
1129
- global $fv_flowplayer_form;
1130
- if( flowplayer::is_licensed() && isset($fv_flowplayer_form) ) {
1131
- echo "<div style='display: none'>\n".$fv_flowplayer_form."</div>\n";
1132
- }
1133
}
20
add_action('wp_ajax_fv_wp_flowplayer_support_mail', 'fv_wp_flowplayer_support_mail');
21
add_action('wp_ajax_fv_wp_flowplayer_activate_extension', 'fv_wp_flowplayer_activate_extension');
22
add_action('wp_ajax_fv_wp_flowplayer_check_template', 'fv_wp_flowplayer_check_template');
23
+ add_action('wp_ajax_fv_wp_flowplayer_check_files', 'fv_wp_flowplayer_check_files');
24
+ add_action('wp_ajax_fv_wp_flowplayer_check_license', 'fv_wp_flowplayer_check_license');
25
26
add_action('admin_head', 'flowplayer_admin_head');
27
add_action('admin_footer', 'flowplayer_admin_footer');
28
add_action('admin_print_footer_scripts', 'flowplayer_admin_footer_wp_js_restore', 999999 );
29
30
add_action('admin_menu', 'flowplayer_admin');
31
+ add_action('media_buttons', 'flowplayer_add_media_button', 10);
32
add_action('media_upload_fvplayer_video', '__return_false'); // keep for compatibility!
33
34
37
38
39
40
+ add_action( 'admin_enqueue_scripts', 'fv_player_shortcode_editor_scripts' );
41
add_action( 'edit_form_after_editor', 'fv_wp_flowplayer_edit_form_after_editor' );
42
43
add_action( 'after_plugin_row', 'fv_wp_flowplayer_after_plugin_row', 10, 3 );
44
45
+ add_action( 'save_post', 'fv_wp_flowplayer_save_post' );
46
+ add_action( 'save_post', 'fv_wp_flowplayer_featured_image' , 10000 );
47
+
48
49
add_filter( 'get_user_option_closedpostboxes_fv_flowplayer_settings', 'fv_wp_flowplayer_closed_meta_boxes' );
50
60
add_action('admin_notices', 'fv_wp_flowplayer_admin_notice');
61
62
63
+
64
+ function fv_wp_flowplayer_featured_image($post_id) {
65
+ if( $parent_id = wp_is_post_revision($post_id) ) {
66
+ $post_id = $parent_id;
67
+ }
68
+
69
+ global $fv_fp;
70
+ if( !isset($fv_fp->conf['integrations']['featured_img']) || $fv_fp->conf['integrations']['featured_img'] != 'true' ){
71
+ return;
72
+ }
73
+
74
+ $thumbnail_id = get_post_thumbnail_id($post_id);
75
+ if( $thumbnail_id != 0 ) {
76
+ return;
77
+ }
78
+
79
+ $post = get_post($post_id);
80
+ if( !$post || empty($post->post_content) ){
81
+ return;
82
+ }
83
+
84
+ $sThumbUrl = array();
85
+ if (!preg_match('/(?:splash=\\\?")([^"]*.(?:jpg|gif|png))/', $post->post_content, $sThumbUrl) || empty($sThumbUrl[1])) {
86
+ return;
87
+ }
88
+
89
+ $thumbnail_id = fv_wp_flowplayer_save_to_media_library($sThumbUrl[1], $post_id);
90
+ if($thumbnail_id){
91
+ set_post_thumbnail($post_id, $thumbnail_id);
92
+ }
93
+
94
+ }
95
+
96
+ function fv_wp_flowplayer_construct_filename( $post_id ) {
97
+ $filename = get_the_title( $post_id );
98
+ $filename = sanitize_title( $filename, $post_id );
99
+ $filename = urldecode( $filename );
100
+ $filename = preg_replace( '/[^a-zA-Z0-9\-]/', '', $filename );
101
+ $filename = substr( $filename, 0, 32 );
102
+ $filename = trim( $filename, '-' );
103
+ if ( $filename == '' ) $filename = (string) $post_id;
104
+ return $filename;
105
+ }
106
+
107
+ function fv_wp_flowplayer_save_to_media_library( $image_url, $post_id ) {
108
+
109
+ $error = '';
110
+ $response = wp_remote_get( $image_url );
111
+ if( is_wp_error( $response ) ) {
112
+ $error = new WP_Error( 'thumbnail_retrieval', sprintf( __( 'Error retrieving a thumbnail from the URL <a href="%1$s">%1$s</a> using <code>wp_remote_get()</code><br />If opening that URL in your web browser returns anything else than an error page, the problem may be related to your web server and might be something your host administrator can solve.', 'video-thumbnails' ), $image_url ) . '<br>' . __( 'Error Details:', 'video-thumbnails' ) . ' ' . $response->get_error_message() );
113
+ } else {
114
+ $image_contents = $response['body'];
115
+ $image_type = wp_remote_retrieve_header( $response, 'content-type' );
116
+ }
117
+
118
+ if ( $error != '' || $image_contents == '' ) {
119
+ return false;
120
+ } else {
121
+
122
+ // Translate MIME type into an extension
123
+ if ( $image_type == 'image/jpeg' ) {
124
+ $image_extension = '.jpg';
125
+ } elseif ( $image_type == 'image/png' ) {
126
+ $image_extension = '.png';
127
+ } elseif ( $image_type == 'image/gif' ) {
128
+ $image_extension = '.gif';
129
+ } else {
130
+ return new WP_Error( 'thumbnail_upload', __( 'Unsupported MIME type:', 'video-thumbnails' ) . ' ' . $image_type );
131
+ }
132
+
133
+ // Construct a file name with extension
134
+ $new_filename = fv_wp_flowplayer_construct_filename( $post_id ) . $image_extension;
135
+
136
+ // Save the image bits using the new filename
137
+ $upload = wp_upload_bits( $new_filename, null, $image_contents );
138
+
139
+ // Stop for any errors while saving the data or else continue adding the image to the media library
140
+ if ( $upload['error'] ) {
141
+ $error = new WP_Error( 'thumbnail_upload', __( 'Error uploading image data:', 'video-thumbnails' ) . ' ' . $upload['error'] );
142
+ return $error;
143
+ } else {
144
+
145
+ $wp_filetype = wp_check_filetype( basename( $upload['file'] ), null );
146
+
147
+ $upload = apply_filters( 'wp_handle_upload', array(
148
+ 'file' => $upload['file'],
149
+ 'url' => $upload['url'],
150
+ 'type' => $wp_filetype['type']
151
+ ), 'sideload' );
152
+
153
+ // Contstruct the attachment array
154
+ $attachment = array(
155
+ 'post_mime_type' => $upload['type'],
156
+ 'post_title' => get_the_title( $post_id ),
157
+ 'post_content' => '',
158
+ 'post_status' => 'inherit'
159
+ );
160
+ // Insert the attachment
161
+ $attach_id = wp_insert_attachment( $attachment, $upload['file'], $post_id );
162
+
163
+ }
164
+
165
+ }
166
+
167
+ return $attach_id;
168
+
169
+ }
170
+
171
function flowplayer_activate() {
172
+
173
}
174
175
232
* Administrator environment function.
233
*/
234
function flowplayer_admin () {
235
+ if( function_exists('add_submenu_page') ) {
236
+ add_options_page( 'FV Player', 'FV Player', 'manage_options', 'fvplayer', 'flowplayer_page' );
237
+ }
238
}
239
240
289
if( stripos($plugin,'foliopress-wysiwyg') !== FALSE )
290
$found = true;
291
}
292
+ $button_tip = 'Insert a video';
293
$wizard_url = 'media-upload.php?post_id='.$post->ID.'&type=fv-wp-flowplayer';
294
+ $icon = '<span> </span>';
295
+
296
+ echo '<a title="' . __('Add FV Player', 'fv-wordpress-flowplayer') . '" title="' . $button_tip . '" href="#" class="button fv-wordpress-flowplayer-button" >'.$icon.' Player</a>';
297
}
298
299
353
echo "</p></div>";
354
}
355
356
+ if( isset($_GET['fv-licensing']) && $_GET['fv-licensing'] == "check" ){
357
+ echo '<div class="updated inline">
358
+ <p>Thank you for purchase. Your license will be renewed in couple of minutes.<br/>
359
+ Please make sure you upgrade <strong>FV Player Pro</strong> and <strong>FV Player VAST</strong> if you are using it.</p>
360
+ </div>';
361
+ }
362
+
363
+ global $FV_Player_Pro;
364
+ if( $FV_Player_Pro && version_compare($FV_Player_Pro->version,'0.5') == -1 ) :
365
+ ?>
366
+ <div class="error">
367
+ <p><?php _e( 'FV Wordpress Flowplayer: Your pro extension is installed, but it\'s not compatible with FV Flowplayer 6! Make sure you upgrade your FV Player Pro to version 0.5 or above.', 'my-text-domain' ); ?></p>
368
+ </div>
369
+ <?php
370
+ endif;
371
+
372
/*if( isset($_GET['page']) && $_GET['page'] == 'backend.php' ) {
373
$options = get_option( 'fvwpflowplayer' );
374
if( $options['key'] == 'false' ) {
377
echo "</p></div>";
378
}
379
}*/
380
}
381
382
383
+ function fv_player_shortcode_editor_scripts( $page ) {
384
if( $page !== 'post.php' && $page !== 'post-new.php' ) {
385
return;
386
}
387
388
global $fv_wp_flowplayer_ver;
389
390
+
391
wp_register_script('fvwpflowplayer-domwindow', flowplayer::get_plugin_url().'/js/jquery.colorbox-min.js',array('jquery'), $fv_wp_flowplayer_ver );
392
wp_enqueue_script('fvwpflowplayer-domwindow');
393
394
+ wp_register_script('fvwpflowplayer-shortcode-editor', flowplayer::get_plugin_url().'/js/shortcode-editor.js',array('jquery'), $fv_wp_flowplayer_ver );
395
+ wp_register_script('fvwpflowplayer-shortcode-editor-old', flowplayer::get_plugin_url().'/js/shortcode-editor.old.js',array('jquery'), $fv_wp_flowplayer_ver );
396
+
397
+ global $fv_fp;
398
+ if( isset($fv_fp->conf["interface"]['shortcode_editor_old']) && $fv_fp->conf["interface"]['shortcode_editor_old'] == 'true' ) {
399
+ wp_enqueue_script('fvwpflowplayer-shortcode-editor-old');
400
+ } else {
401
+ wp_enqueue_script('fvwpflowplayer-shortcode-editor');
402
+ }
403
+
404
wp_register_style('fvwpflowplayer-domwindow-css', flowplayer::get_plugin_url().'/css/colorbox.css','','1.0','screen');
405
+ wp_enqueue_style('fvwpflowplayer-domwindow-css');
406
}
407
408
/*
409
Trick media uploader to show video only, while making sure we use our custom type; Also save options
410
*/
419
}
420
421
if( isset($_POST['fv-wp-flowplayer-submit']) ) {
422
+ check_admin_referer('fv_flowplayer_settings_nonce','fv_flowplayer_settings_nonce');
423
+
424
global $fv_fp;
425
if( method_exists($fv_fp,'_set_conf') ) {
426
$fv_fp->_set_conf();
428
echo 'Error saving FV Flowplayer options.';
429
}
430
}
431
+
432
+ if( isset($_GET['fv-licensing']) && $_GET['fv-licensing'] == "check" ){
433
delete_option("fv_wordpress_flowplayer_persistent_notices");
434
435
+ //license will expire in 5 seconds in the function:
436
+ fv_wp_flowplayer_admin_key_update();
437
+ }
438
439
global $fv_fp;
440
global $fv_wp_flowplayer_ver, $fv_wp_flowplayer_core_ver;
448
449
$version = get_option( 'fvwpflowplayer_core_ver' );
450
if( version_compare( $fv_wp_flowplayer_core_ver, $version ) == 1 ) {
451
+ fv_wp_flowplayer_admin_key_update();
452
+ fv_wp_flowplayer_delete_extensions_transients();
453
}
454
}
455
461
$fv_fp->pointer_boxes['fv_flowplayer_video_checker_service'] = array(
462
'id' => '#wp-admin-bar-new-content',
463
'pointerClass' => 'fv_flowplayer_video_checker_service',
464
+ 'heading' => __('FV Player Video Checker', 'fv-wordpress-flowplayer'),
465
+ 'content' => __("<p>FV Player includes a free video checker which will check your videos for any encoding errors and helps ensure smooth playback of all your videos. To work its magic, our video checker must contact our server.</p><p>Would you like to enable the video encoding checker?</p>", 'fv-wordpress-flowplayer'),
466
'position' => array( 'edge' => 'top', 'align' => 'center' ),
467
+ 'button1' => __('Allow', 'fv-wordpress-flowplayer'),
468
+ 'button2' => __('Disable the video checker', 'fv-wordpress-flowplayer')
469
);
470
} else {
471
if(
477
'id' => '#wp-admin-bar-new-content',
478
'pointerClass' => 'fv_flowplayer_key_automatic',
479
'pointerWidth' => 340,
480
+ 'heading' => __('FV Flowplayer License Update', 'fv-wordpress-flowplayer'),
481
+ 'content' => __('New version of FV Flowplayer core has been installed for your licensed website. Please accept the automatic license key updating (connects to Foliovision servers) or update the key manually by loggin into your Foliovision account.', 'fv-wordpress-flowplayer'),
482
'position' => array( 'edge' => 'top', 'align' => 'center' ),
483
+ 'button1' => __('Always auto-update', 'fv-wordpress-flowplayer'),
484
+ 'button2' => __("I'll update it manually", 'fv-wordpress-flowplayer')
485
);
486
} else if( version_compare( $fv_wp_flowplayer_core_ver, get_option('fvwpflowplayer_core_ver') ) !== 0 && preg_match( '!^\$\d+!', $fv_fp->conf['key'] ) == 0 ) {
487
update_option( 'fvwpflowplayer_core_ver', $fv_wp_flowplayer_core_ver );
488
}
489
}
490
491
+ if(
492
+ (stripos( $_SERVER['REQUEST_URI'], '/plugins.php') !== false || ( isset($_GET['page']) && $_GET['page'] === 'fvplayer' ) )
493
+ && $pnotices = get_option('fv_wordpress_flowplayer_persistent_notices')
494
+ ) {
495
+ $fv_fp->pointer_boxes['fv_flowplayer_license_expired'] = array(
496
+ 'id' => '#wp-admin-bar-new-content',
497
+ 'pointerClass' => 'fv_flowplayer_license_expired',
498
+ 'pointerWidth' => 340,
499
+ 'heading' => __('FV Flowplayer License Expired', 'fv-wordpress-flowplayer'),
500
+ 'content' => __( $pnotices ),
501
+ 'position' => array( 'edge' => 'top', 'align' => 'center' ),
502
+ 'button1' => __('Hide this notice', 'fv-wordpress-flowplayer'),
503
+ 'button2' => __('I\'ll check this later', 'fv-wordpress-flowplayer')
504
+ );
505
+ }
506
+
507
+ if( !$fv_fp->_get_option('disable_video_hash_links') && !$fv_fp->_get_option('notification_video_links') ) {
508
+ $fv_fp->pointer_boxes['fv_player_notification_video_links'] = array(
509
+ 'id' => '#wp-admin-bar-new-content',
510
+ 'pointerClass' => 'fv_player_notification_video_links',
511
+ 'heading' => __('FV Player Video Links', 'fv-wordpress-flowplayer'),
512
+ 'content' => $fv_fp->_get_option('disableembedding') ? __("<p>Now you can enable Video Links to allow people to share exact location in your videos. Clicking that link gives them a link to play that video at the exact time.</p>", 'fv-wordpress-flowplayer') : __("<p>Each video player now contains a link in the top bar. Clicking that link gives your visitors a link to play that video at the exact time where they are watching it.</p>", 'fv-wordpress-flowplayer'),
513
+ 'position' => array( 'edge' => 'top', 'align' => 'center' ),
514
+ 'button1' => __('Open Settings', 'fv-wordpress-flowplayer'),
515
+ 'button2' => __('Dismiss', 'fv-wordpress-flowplayer')
516
+ );
517
+
518
+ add_action( 'admin_print_footer_scripts', 'fv_player_pointer_scripts' );
519
+ }
520
+
521
$aOptions = get_option( 'fvwpflowplayer' );
522
+ if( !isset($aOptions['version']) || version_compare( $fv_wp_flowplayer_ver, $aOptions['version'] ) ) {
523
+ //update_option( 'fv_wordpress_flowplayer_deferred_notices', 'FV Flowplayer upgraded - please click "Check template" and "Check videos" for automated check of your site at <a href="'.site_url().'/wp-admin/options-general.php?page=fvplayer">the settings page</a> for automated checks!' );
524
+
525
+ if( $aOptions['version'] == '6.0.5.20' && $aOptions['playlist_advance'] == 'true' ) { // version 6.0.5 used reverse login for this option!
526
+ $aOptions['playlist_advance'] = false;
527
+ $fv_fp->conf = $aOptions;
528
+ }
529
530
$aOptions['version'] = $fv_wp_flowplayer_ver;
531
update_option( 'fvwpflowplayer', $aOptions );
532
+
533
+ fv_wp_flowplayer_pro_settings_update_for_lightbox();
534
$fv_fp->css_writeout();
535
+
536
+ fv_wp_flowplayer_delete_extensions_transients();
537
+ delete_option('fv_flowplayer_extension_install');
538
}
539
540
if( isset($_GET['page']) && $_GET['page'] == 'fvplayer' ) {
541
wp_enqueue_script('common');
542
wp_enqueue_script('wp-lists');
543
wp_enqueue_script('postbox');
544
+
545
+ wp_register_script('fv-player-admin', flowplayer::get_plugin_url().'/js/admin.js',array('jquery'), $fv_wp_flowplayer_ver );
546
+ wp_enqueue_script('fv-player-admin');
547
}
548
549
559
560
$aCheck = get_transient( 'fv_flowplayer_license' );
561
$aInstalled = get_option('fv_flowplayer_extension_install');
562
+ if( isset($aCheck->valid) && $aCheck->valid){
563
564
+ if( !isset($aInstalled['fv_player_pro']) || ( isset($_REQUEST['nonce_fv_player_pro_install']) && wp_verify_nonce( $_REQUEST['nonce_fv_player_pro_install'], 'fv_player_pro_install') ) ) {
565
+ fv_wp_flowplayer_install_extension('fv_player_pro');
566
+ }
567
+ delete_option('fv_wordpress_flowplayer_persistent_notices');
568
+ }
569
+
570
+ if( isset($aCheck->expired) && $aCheck->expired && stripos( implode(get_option('active_plugins')), 'fv-player-pro' ) !== false ) {
571
+ add_filter( 'site_transient_update_plugins', 'fv_player_remove_update' );
572
+ }
573
+ }
574
+ }
575
576
577
function fv_wp_flowplayer_admin_key_update() {
582
if( $data->domain && $data->key && stripos( home_url(), $data->domain ) !== false ) {
583
$fv_fp->conf['key'] = $data->key;
584
update_option( 'fvwpflowplayer', $fv_fp->conf );
585
+ update_option( 'fvwpflowplayer_core_ver', $fv_wp_flowplayer_core_ver );
586
+
587
+ fv_wp_flowplayer_change_transient_expiration("fv_flowplayer_license",5);
588
+ fv_wp_flowplayer_delete_extensions_transients(5);
589
return true;
590
}
591
+ } else if( isset($data->expired) && $data->expired && isset($data->message) ){
592
+ update_option( 'fv_wordpress_flowplayer_persistent_notices', $data->message );
593
+ update_option( 'fvwpflowplayer_core_ver', $fv_wp_flowplayer_core_ver );
594
+ return false;
595
} else {
596
update_option( 'fv_wordpress_flowplayer_deferred_notices', 'FV Flowplayer License upgrade failed - please check if you are running the plugin on your licensed domain.' );
597
update_option( 'fvwpflowplayer_core_ver', $fv_wp_flowplayer_core_ver );
605
606
$args = array(
607
'body' => array( 'plugin' => 'fv-wordpress-flowplayer', 'version' => $fv_wp_flowplayer_ver, 'core_ver' => $fv_wp_flowplayer_core_ver, 'type' => home_url(), 'action' => $aArgs['action'], 'admin-url' => admin_url() ),
608
+ 'timeout' => 10,
609
'user-agent' => 'fv-wordpress-flowplayer-'.$fv_wp_flowplayer_ver.' ('.$fv_wp_flowplayer_core_ver.')'
610
);
611
+ $resp = wp_remote_post( 'https://foliovision.com/?fv_remote=true', $args );
612
613
+ if( !is_wp_error($resp) && isset($resp['body']) && $resp['body'] && $data = json_decode( preg_replace( '~[\s\S]*?<FVFLOWPLAYER>(.*?)</FVFLOWPLAYER>[\s\S]*?~', '$1', $resp['body'] ) ) ) {
614
return $data;
615
+
616
+ } else if( is_wp_error($resp) && stripos($resp->get_error_message(),'SSL' ) !== false ) {
617
+ $args = array( 'sslverify' => false );
618
+ $resp = wp_remote_post( 'https://foliovision.com/?fv_remote=true', $args );
619
+
620
+ if( !is_wp_error($resp) && isset($resp['body']) && $resp['body'] && $data = json_decode( preg_replace( '~[\s\S]*?<FVFLOWPLAYER>(.*?)</FVFLOWPLAYER>[\s\S]*?~', '$1', $resp['body'] ) ) ) {
621
+ return $data;
622
+ }
623
+
624
}
625
+
626
+ return false;
627
+ }
628
+
629
+ function fv_wp_flowplayer_pro_settings_update_for_lightbox(){
630
+ global $fv_fp;
631
+ if(isset($fv_fp->conf['pro']) && isset($fv_fp->conf['pro']['interface']['lightbox']) && $fv_fp->conf['pro']['interface']['lightbox'] == true ){
632
+ $fv_fp->conf['interface']['lightbox'] = true;
633
+ $fv_fp->conf['pro']['interface']['lightbox'] = false;
634
+ $options = get_option('fvwpflowplayer');
635
+ unset($options['pro']['interface']['lightbox']);
636
+ $options['interface']['lightbox'] = true;
637
+ update_option('fvwpflowplayer', $options);
638
+ }
639
+ if(isset($fv_fp->conf['pro']) && isset($fv_fp->conf['pro']['lightbox_images']) && $fv_fp->conf['pro']['lightbox_images'] == true ){
640
+ $fv_fp->conf['lightbox_images'] = true;
641
+ $fv_fp->conf['pro']['lightbox_images'] = false;
642
+ $options = get_option('fvwpflowplayer');
643
+ unset($options['pro']['lightbox_images']);
644
+ $options['lightbox_images'] = true;
645
+ update_option('fvwpflowplayer', $options);
646
+ }
647
+
648
+ }
649
+
650
+ function fv_wp_flowplayer_change_transient_expiration( $transient_name, $time ){
651
+ $transient_val = get_transient($transient_name);
652
+ if( $transient_val ){
653
+ set_transient($transient_name,$transient_val,$time);
654
+ return true;
655
+ }
656
+ return false;
657
+ }
658
+
659
+
660
+ function fv_wp_flowplayer_delete_extensions_transients( $delete_delay = false ){
661
+ $aTransientsLike = array('fv-player-pro_license','fv-player-vast_license','fv-player-pro_fp-private-updates','fv-player-vast_fp-private-updates');
662
+
663
+ global $wpdb;
664
+ $aWhere = array();
665
+ foreach( $aTransientsLike AS $sKey ) {
666
+ $aWhere[] = 'option_name LIKE "%'.$sKey.'%"';
667
+ }
668
+ $sWhere = implode(" OR ", $aWhere);
669
+ $aOptions = $wpdb->get_col( "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE '%_transient_fv%' AND ( ".$sWhere." )" );
670
+
671
+ foreach( $aOptions AS $sKey ) {
672
+ if( !$delete_delay ){
673
+ delete_transient( str_replace('_transient_','',$sKey) );
674
+ } else {
675
+ fv_wp_flowplayer_change_transient_expiration( str_replace('_transient_','',$sKey), $delete_delay );
676
+ }
677
+ }
678
+
679
+ $aUpdates = get_site_transient('update_plugins');
680
+ set_site_transient('update_plugins', $aUpdates );
681
+
682
}
683
684
685
function fv_wp_flowplayer_edit_form_after_editor( ) {
686
+ global $fv_fp;
687
+ if( isset($fv_fp->conf["interface"]['shortcode_editor_old']) && $fv_fp->conf["interface"]['shortcode_editor_old'] == 'true' ) {
688
+ include dirname( __FILE__ ) . '/../view/wizard.old.php';
689
+ } else {
690
+ include dirname( __FILE__ ) . '/../view/wizard.php';
691
+ }
692
}
693
694
901
$errors[] = 'html5.js not found in your template! Videos might not play in old browsers, like Internet Explorer 6-8. Read our instrutions <a href="https://foliovision.com/player/installation#html5js">here</a>.';
902
}
903
904
+ $ok[] = __('Template checker has changed. Just open any of your videos on your site and see if you get a red warning message about JavaScript not working.', 'fv-wordpress-flowplayer');
905
906
$response['body'] = preg_replace( 'lt;!--[\s\S]+?-->#x27;, '', $response['body'] ); // handle HTML comments
907
916
if( $check == - 1 ) {
917
$errors[] = "Flowplayer script <code>$flowplayer_script</code> is old version and won't play. You need to get rid of this script.";
918
} else if( $check == 1 ) {
919
+ $ok[] = __('FV Flowplayer script found: ', 'fv-wordpress-flowplayer') . "<code>$flowplayer_script</code>!";
920
$fv_flowplayer_pos = strpos( $response['body'], $flowplayer_script );
921
}
922
}
926
927
928
// check jQuery scripts
929
+ preg_match_all( '!<script[^>]*?src=[\'"]([^\'"]*?/jquery[0-9.-]*?(?:\.min)?\.js[^\'"]*?)[\'"][^>]*?>\s*?</script>!', $response['body'], $jquery_scripts );
930
if( count($jquery_scripts[1]) > 0 ) {
931
foreach( $jquery_scripts[1] AS $jkey => $jquery_script ) {
932
+ $ok[] = __('jQuery library found: ', 'fv-wordpress-flowplayer') . "<code>$jquery_script</code>!";
933
+ $jquery_pos = strpos( $response['body'], $jquery_script );
934
}
935
936
if( count($jquery_scripts[1]) > 1 ) {
952
}
953
954
die('-1');
955
+ }
956
+
957
+
958
+ function fv_wp_flowplayer_check_license() {
959
+ if( stripos( $_SERVER['HTTP_REFERER'], home_url() ) === 0 ) {
960
+ if( fv_wp_flowplayer_admin_key_update() ) {
961
+ $output = array( 'errors' => false, 'ok' => array(__('License key acquired successfully. <a href="">Reload</a>', 'fv-wordpress-flowplayer')) );
962
+ fv_wp_flowplayer_install_extension();
963
+ } else {
964
+ $message = get_option('fv_wordpress_flowplayer_deferred_notices');
965
+ if( !$message ) $message = get_option('fv_wordpress_flowplayer_persistent_notices');
966
+ $output = array( 'errors' => array($message), 'ok' => false );
967
+ }
968
+ echo '<FVFLOWPLAYER>'.json_encode($output).'</FVFLOWPLAYER>';
969
+ die();
970
+ }
971
+ die('-1');
972
+ }
973
974
975
function fv_wp_flowplayer_array_search_by_item( $find, $in_array, &$found, $like = false ) {
1003
function fv_wp_flowplayer_support_mail() {
1004
if( isset( $_POST['notice'] ) && stripos( $_SERVER['HTTP_REFERER'], home_url() ) === 0 ) {
1005
1006
+ $current_user = wp_get_current_user();
1007
1008
$content = '<p>User: '.$current_user->display_name." (".$current_user->user_email.")</p>\n";
1009
$content .= '<p>User Agent: '.$_SERVER['HTTP_USER_AGENT']."</p>\n";
1048
1049
function fv_wp_flowplayer_closed_meta_boxes( $closed ) {
1050
if ( false === $closed )
1051
+ $closed = array( 'fv_flowplayer_amazon_options', 'fv_flowplayer_interface_options', 'fv_flowplayer_default_options', 'fv_flowplayer_ads', 'fv_flowplayer_integrations', 'fv_player_pro' );
1052
1053
return $closed;
1054
}
1085
update_option( 'fvwpflowplayer', $conf );
1086
}
1087
die();
1088
+ }
1089
+
1090
+ if( isset($_POST['key']) && $_POST['key'] == 'fv_player_notification_video_links' && isset($_POST['value']) ) {
1091
+ check_ajax_referer('fv_player_notification_video_links');
1092
+ $conf = get_option( 'fvwpflowplayer' );
1093
+ if( $conf ) {
1094
+ $conf['notification_video_links'] = 'true';
1095
+ update_option( 'fvwpflowplayer', $conf );
1096
+ }
1097
+ die();
1098
}
1099
+
1100
+ if( isset($_POST['key']) && $_POST['key'] == 'fv_flowplayer_license_expired' && isset($_POST['value']) && $_POST['value'] === 'true' ) {
1101
+ check_ajax_referer('fv_flowplayer_license_expired');
1102
+ delete_option("fv_wordpress_flowplayer_persistent_notices");
1103
+ die();
1104
+ }
1105
+
1106
}
1107
1108
1135
$aPluginInfo = get_transient( 'fv_flowplayer_license' );
1136
$plugin_basename = $aPluginInfo->{$plugin_package}->slug;
1137
$download_url = $aPluginInfo->{$plugin_package}->url;
1138
+
1139
+ $sPluginBasenameReal = fv_flowplayer_get_extension_path( str_replace( '_', '-', $plugin_package ) );
1140
+ $plugin_basename = $sPluginBasenameReal ? $sPluginBasenameReal : $plugin_basename;
1141
1142
$url = wp_nonce_url( site_url().'/wp-admin/options-general.php?page=fvplayer', 'fv_player_pro_install', 'nonce_fv_player_pro_install' );
1143
1164
1165
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
1166
1167
+ $sTaskDone = __('FV Flowplayer Pro extension installed - check the new ', 'fv-wordpress-flowplayer') . '<a href="'.site_url().'/wp-admin/options-general.php?page=fvplayer#fv_player_pro">' . __('Pro features', 'fv-wordpress-flowplayer') . '</a>!';
1168
+ if( !$sPluginBasenameReal || is_wp_error(validate_plugin($plugin_basename)) ) {
1169
echo '<div style="display: none;">';
1170
$objInstaller = new Plugin_Upgrader();
1171
$objInstaller->install( $download_url );
1173
wp_cache_flush();
1174
1175
if ( is_wp_error( $objInstaller->skin->result ) ) {
1176
+
1177
+ update_option( 'fv_wordpress_flowplayer_deferred_notices', __('FV Flowplayer Pro extension install failed - ', 'fv-wordpress-flowplayer') . $objInstaller->skin->result->get_error_message() );
1178
$bResult = false;
1179
} else {
1180
if ( $objInstaller->plugin_info() ) {
1184
1185
$activate = activate_plugin( $plugin_basename );
1186
if ( is_wp_error( $activate ) ) {
1187
+ update_option( 'fv_wordpress_flowplayer_deferred_notices', __('FV Flowplayer Pro extension install failed - ', 'fv-wordpress-flowplayer') . $activate->get_error_message());
1188
$bResult = false;
1189
}
1190
}
1191
+
1192
+ } else if( $sPluginBasenameReal ) {
1193
+ $sTaskDone = __('FV Flowplayer Pro extension upgraded successfully!', 'fv-wordpress-flowplayer');
1194
+
1195
+ echo '<div style="display: none;">';
1196
+ $objInstaller = new Plugin_Upgrader();
1197
+ $objInstaller->upgrade( $sPluginBasenameReal );
1198
+ echo '</div></div>'; // explanation: extra closing tag just to be safe (in case of "The plugin is at the latest version.")
1199
+ wp_cache_flush();
1200
+
1201
+ if ( is_wp_error( $objInstaller->skin->result ) ) {
1202
+ update_option( 'fv_wordpress_flowplayer_deferred_notices', 'FV Flowplayer Pro extension upgrade failed - '.$objInstaller->skin->result->get_error_message() );
1203
+ $bResult = false;
1204
+ } else {
1205
+ if ( $objInstaller->plugin_info() ) {
1206
+ $plugin_basename = $objInstaller->plugin_info();
1207
+
1208
+ }
1209
+
1210
+ $activate = activate_plugin( $plugin_basename );
1211
+ if ( is_wp_error( $activate ) ) {
1212
+ update_option( 'fv_wordpress_flowplayer_deferred_notices', 'FV Flowplayer Pro extension upgrade failed - '.$activate->get_error_message() );
1213
+ $bResult = false;
1214
+ }
1215
+ }
1216
+
1217
}
1218
1219
if( !isset($bResult) ) {
1220
if( !isset($_GET['page']) || strcmp($_GET['page'],'fvplayer') != 0 ) {
1221
+ update_option( 'fv_wordpress_flowplayer_deferred_notices', $sTaskDone );
1222
}
1223
$bResult = true;
1224
}
1267
}
1268
1269
1270
function fv_flowplayer_admin_scripts() {
1271
if (isset($_GET['page']) && $_GET['page'] == 'fvplayer') {
1272
wp_enqueue_media();
1275
1276
//search for plugin path with {slug}.php
1277
function fv_flowplayer_get_extension_path( $slug ){
1278
+ $aPluginSlugs = get_transient('plugin_slugs');
1279
+ $aPluginSlugs = is_array($aPluginSlugs) ? $aPluginSlugs : array( 'fv-player-pro/fv-player-pro.php');
1280
+ $aActivePlugins = get_option('active_plugins');
1281
+ $aInactivePlugins = array_diff($aPluginSlugs,$aActivePlugins);
1282
+
1283
+ if( !$aPluginSlugs )
1284
return false;
1285
1286
+ foreach( $aActivePlugins as $item ){
1287
if( stripos($item,$slug.'.php') !== false )
1288
return $item;
1289
}
1290
1291
+ foreach( $aInactivePlugins as $item ){
1292
+ if( stripos($item,$slug.'.php') !== false )
1293
+ return $item;
1294
+ }
1295
+
1296
return false;
1297
}
1298
1299
1300
1301
1302
+ function fv_player_disable_object_cache($value=null){
1303
+ global $_wp_using_ext_object_cache, $fv_player_wp_using_ext_object_cache_prev;
1304
+ $fv_player_wp_using_ext_object_cache_prev = $_wp_using_ext_object_cache;
1305
+ $_wp_using_ext_object_cache = false;
1306
+ return $value;
1307
}
1308
1309
+ function fv_player_enable_object_cache($value=null){
1310
+ global $_wp_using_ext_object_cache, $fv_player_wp_using_ext_object_cache_prev;
1311
+ $_wp_using_ext_object_cache = $fv_player_wp_using_ext_object_cache_prev;
1312
+ return $value;
1313
}
1314
1315
+ add_filter( 'pre_set_transient_fv_flowplayer_license', 'fv_player_disable_object_cache' );
1316
+ add_filter( 'pre_transient_fv_flowplayer_license', 'fv_player_disable_object_cache' );
1317
+ add_action( 'delete_transient_fv_flowplayer_license', 'fv_player_disable_object_cache' );
1318
+ add_action( 'set_transient_fv_flowplayer_license', 'fv_player_disable_object_cache' );
1319
+ add_filter( 'transient_fv_flowplayer_license', 'fv_player_enable_object_cache' );
1320
+ add_action( 'deleted_transient_fv_flowplayer_license', 'fv_player_disable_object_cache' );
1321
1322
1323
1324
1325
+ function fv_player_remove_update( $objUpdates ) {
1326
+ if( !$objUpdates || !isset($objUpdates->response) || count($objUpdates->response) == 0 ) return $objUpdates;
1327
1328
+ foreach( $objUpdates->response AS $key => $objUpdate ) {
1329
+ if( stripos($key,'fv-wordpress-flowplayer') === 0 ) {
1330
+ unset($objUpdates->response[$key]);
1331
}
1332
}
1333
+
1334
+ return $objUpdates;
1335
}
1336
1337
1338
1339
1340
+ function fv_player_pointer_scripts() {
1341
+ ?>
1342
+ <script>
1343
+ (function ($) {
1344
+ $(document).on('click', '.fv_player_notification_video_links .button-primary', function(e) {
1345
+ $(document).ajaxComplete( function() {
1346
+ window.location = '<?php echo site_url('wp-admin/options-general.php?page=fvplayer'); ?>#playlist_advance';
1347
+ });
1348
+ });
1349
+ })(jQuery);
1350
+ </script>
1351
+ <?php
1352
}
controller/frontend.php CHANGED
@@ -36,35 +36,46 @@ add_filter( 'run_ngg_resource_manager', '__return_false' ); // Nextgen Gallery
36
37
function fv_flowplayer_ap_action_init(){
38
// Localization
39
- load_plugin_textdomain('fv_flowplayer', false, dirname(dirname(plugin_basename(__FILE__))) . "/languages");
40
}
41
add_action('init', 'fv_flowplayer_ap_action_init');
42
43
function fv_flowplayer_get_js_translations() {
44
45
- $aStrings = Array(
46
- 0 => __('', 'flowplayer'),
47
- 1 => __('Video loading aborted', 'fv_flowplayer'),
48
- 2 => __('Network error', 'fv_flowplayer'),
49
- 3 => __('Video not properly encoded', 'fv_flowplayer'),
50
- 4 => __('Video file not found', 'fv_flowplayer'),
51
- 5 => __('Unsupported video', 'fv_flowplayer'),
52
- 6 => __('Skin not found', 'fv_flowplayer'),
53
- 7 => __('SWF file not found', 'fv_flowplayer'),
54
- 8 => __('Subtitles not found', 'fv_flowplayer'),
55
- 9 => __('Invalid RTMP URL', 'fv_flowplayer'),
56
- 10 => __('Unsupported video format. Try installing Adobe Flash.', 'fv_flowplayer'),
57
- 11 => __('Click to watch the video', 'fv_flowplayer'),
58
- 12 => __('[This post contains video, click to play]', 'fv_flowplayer'),
59
- 'video_expired' => __('<h2>Video file expired.<br />Please reload the page and play it again.</h2>', 'fv_flowplayer'),
60
- 'unsupported_format' => __('<h2>Unsupported video format.<br />Please use a Flash compatible device.</h2>','fv_flowplayer'),
61
- 'mobile_browser_detected_1' => __('Mobile browser detected, serving low bandwidth video.','fv_flowplayer'),
62
- 'mobile_browser_detected_2' => __('Click here','fv_flowplayer'),
63
- 'mobile_browser_detected_3' => __('for full quality.','fv_flowplayer'),
64
- 'live_stream_failed' => __('<h2>Live stream load failed.</h2><h3>Please try again later, perhaps the stream is currently offline.</h3>','fv_flowplayer'),
65
- 'live_stream_failed_2' => __('<h2>Live stream load failed.</h2><h3>Please try again later, perhaps the stream is currently offline.</h3>','fv_flowplayer'),
66
- 'what_is_wrong' => __('Please tell us what is wrong :','fv_flowplayer'),
67
- 'full_sentence' => __('Please give us more information (a full sentence) so we can help you better','fv_flowplayer'),
68
);
69
70
return $aStrings;
@@ -286,16 +297,23 @@ function flowplayer_prepare_scripts() {
286
global $fv_fp, $fv_wp_flowplayer_ver;
287
288
// don't load script in Optimize Press 2 preview
289
- if( flowplayer::is_optimizepress() ) {
290
return;
291
}
292
293
if(
294
isset($GLOBALS['fv_fp_scripts']) ||
295
- (isset($fv_fp->conf['js-everywhere']) && strcmp($fv_fp->conf['js-everywhere'],'true') == 0 ) ||
296
isset($_GET['fv_wp_flowplayer_check_template'])
297
- ) {
298
- wp_enqueue_script( 'flowplayer', flowplayer::get_plugin_url().'/flowplayer/fv-flowplayer.min.js', array('jquery'), $fv_wp_flowplayer_ver, true );
299
300
$sPluginUrl = preg_replace( '~^.*://~', '//', FV_FP_RELATIVE_PATH );
301
@@ -306,7 +324,28 @@ function flowplayer_prepare_scripts() {
306
wp_enqueue_script( 'flowplayer-mediaelement', flowplayer::get_plugin_url().'/mediaelement/mediaelement-and-player.min.js', array('jquery'), $fv_wp_flowplayer_ver, true );
307
}
308
309
- $aConf = array('embed' => array( 'library' => $sPluginUrl.'/flowplayer/fv-flowplayer.min.js', 'script' => $sPluginUrl.'/flowplayer/embed.min.js', 'skin' => $sPluginUrl.'/css/flowplayer.css', 'swf' => $sPluginUrl.'/flowplayer/flowplayer.swf?ver='.$fv_wp_flowplayer_ver ) );
310
if( $sCommercialKey ) $aConf['key'] = $sCommercialKey;
311
if( apply_filters( 'fv_flowplayer_safety_resize', true) && !isset($fv_fp->conf['fixed_size']) || strcmp($fv_fp->conf['fixed_size'],'true') != 0 ) {
312
$aConf['safety_resize'] = true;
@@ -327,6 +366,9 @@ function flowplayer_prepare_scripts() {
327
wp_localize_script( 'flowplayer', 'fv_flowplayer_admin_input', array(true) );
328
wp_localize_script( 'flowplayer', 'fv_flowplayer_admin_js_test', array(true) );
329
}
330
331
wp_localize_script( 'flowplayer', 'fv_flowplayer_translations', fv_flowplayer_get_js_translations());
332
wp_localize_script( 'flowplayer', 'fv_fp_ajaxurl', site_url().'/wp-admin/admin-ajax.php' );
@@ -338,19 +380,39 @@ function flowplayer_prepare_scripts() {
338
wp_localize_script( 'flowplayer', 'fv_flowplayer_popup', $fv_fp->aPopups );
339
}
340
341
- if( count($GLOBALS['fv_fp_scripts']) > 0 ) {
342
foreach( $GLOBALS['fv_fp_scripts'] AS $sKey => $aScripts ) {
343
wp_localize_script( 'flowplayer', $sKey.'_array', $aScripts );
344
}
345
}
346
}
347
}
348
349
/**
350
* Prints flowplayer javascript content to the bottom of the page.
351
*/
352
function flowplayer_display_scripts() {
353
- if( flowplayer::is_optimizepress() ) {
354
return;
355
}
356
@@ -371,7 +433,7 @@ function flowplayer($shortcode) {
371
Make sure our div won't be wrapped in any P tag and that html attributes don't break the shortcode
372
*/
373
function fv_flowplayer_the_content( $c ) {
374
- if( flowplayer::is_optimizepress() ) {
375
return $c;
376
}
377
@@ -441,3 +503,45 @@ function fv_player_caption( $caption ) {
441
}
442
add_filter( 'fv_player_caption', 'fv_player_caption' );
443
36
37
function fv_flowplayer_ap_action_init(){
38
// Localization
39
+ load_plugin_textdomain('fv-wordpress-flowplayer', false, dirname(dirname(plugin_basename(__FILE__))) . "/languages");
40
}
41
add_action('init', 'fv_flowplayer_ap_action_init');
42
43
function fv_flowplayer_get_js_translations() {
44
45
+ $sWhy = __(' <a target="_blank" href="https://foliovision.com/2017/05/issues-with-vimeo-on-android">Why?</a>','fv-wordpress-flowplayer');
46
+
47
+ $aStrings = array(
48
+ 0 => '',
49
+ 1 => __('Video loading aborted', 'fv-wordpress-flowplayer'),
50
+ 2 => __('Network error', 'fv-wordpress-flowplayer'),
51
+ 3 => __('Video not properly encoded', 'fv-wordpress-flowplayer'),
52
+ 4 => __('Video file not found', 'fv-wordpress-flowplayer'),
53
+ 5 => __('Unsupported video', 'fv-wordpress-flowplayer'),
54
+ 6 => __('Skin not found', 'fv-wordpress-flowplayer'),
55
+ 7 => __('SWF file not found', 'fv-wordpress-flowplayer'),
56
+ 8 => __('Subtitles not found', 'fv-wordpress-flowplayer'),
57
+ 9 => __('Invalid RTMP URL', 'fv-wordpress-flowplayer'),
58
+ 10 => __('Unsupported video format. Try installing Adobe Flash.', 'fv-wordpress-flowplayer'),
59
+ 11 => __('Click to watch the video', 'fv-wordpress-flowplayer'),
60
+ 12 => __('[This post contains video, click to play]', 'fv-wordpress-flowplayer'),
61
+ 'video_expired' => __('<h2>Video file expired.<br />Please reload the page and play it again.</h2>', 'fv-wordpress-flowplayer'),
62
+ 'unsupported_format' => __('<h2>Unsupported video format.<br />Please use a Flash compatible device.</h2>','fv-wordpress-flowplayer'),
63
+ 'mobile_browser_detected_1' => __('Mobile browser detected, serving low bandwidth video.','fv-wordpress-flowplayer'),
64
+ 'mobile_browser_detected_2' => __('Click here','fv-wordpress-flowplayer'),
65
+ 'mobile_browser_detected_3' => __('for full quality.','fv-wordpress-flowplayer'),
66
+ 'live_stream_failed' => __('<h2>Live stream load failed.</h2><h3>Please try again later, perhaps the stream is currently offline.</h3>','fv-wordpress-flowplayer'),
67
+ 'live_stream_failed_2' => __('<h2>Live stream load failed.</h2><h3>Please try again later, perhaps the stream is currently offline.</h3>','fv-wordpress-flowplayer'),
68
+ 'what_is_wrong' => __('Please tell us what is wrong :','fv-wordpress-flowplayer'),
69
+ 'full_sentence' => __('Please give us more information (a full sentence) so we can help you better','fv-wordpress-flowplayer'),
70
+ 'error_JSON' =>__('Admin: Error parsing JSON','fv-wordpress-flowplayer'),
71
+ 'no_support_IE9' =>__('Admin: Video checker doesn\'t support IE 9.','fv-wordpress-flowplayer'),
72
+ 'check_failed' =>__('Admin: Check failed.','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
+ 'warning_iphone_subs' => __('This video has subtitles, that are not supported on your device.','fv-wordpress-flowplayer'),
77
+ '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>.','fv-wordpress-flowplayer').$sWhy,
78
+ '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.','fv-wordpress-flowplayer').$sWhy,
79
);
80
81
return $aStrings;
297
global $fv_fp, $fv_wp_flowplayer_ver;
298
299
// don't load script in Optimize Press 2 preview
300
+ if( flowplayer::is_special_editor() ) {
301
return;
302
}
303
304
if(
305
isset($GLOBALS['fv_fp_scripts']) ||
306
+ $fv_fp->_get_option('js-everywhere') ||
307
isset($_GET['fv_wp_flowplayer_check_template'])
308
+ ){
309
+
310
+ $aDependencies = array('jquery');
311
+ if( $fv_fp->load_tabs ) {
312
+ wp_enqueue_script('jquery-ui-tabs', false, array('jquery','jquery-ui-core'), $fv_wp_flowplayer_ver, true);
313
+ $aDependencies[] = 'jquery-ui-tabs';
314
+ }
315
+
316
+ wp_enqueue_script( 'flowplayer', flowplayer::get_plugin_url().'/flowplayer/fv-flowplayer.min.js', $aDependencies, $fv_wp_flowplayer_ver, true );
317
318
$sPluginUrl = preg_replace( '~^.*://~', '//', FV_FP_RELATIVE_PATH );
319
324
wp_enqueue_script( 'flowplayer-mediaelement', flowplayer::get_plugin_url().'/mediaelement/mediaelement-and-player.min.js', array('jquery'), $fv_wp_flowplayer_ver, true );
325
}
326
327
+ $aConf = array( 'fullscreen' => true, 'swf' => $sPluginUrl.'/flowplayer/flowplayer.swf?ver='.$fv_wp_flowplayer_ver, 'swfHls' => $sPluginUrl.'/flowplayer/flowplayerhls.swf?ver='.$fv_wp_flowplayer_ver );
328
+
329
+ if( !empty($fv_fp->conf['rtmp-live-buffer']) && $fv_fp->conf['rtmp-live-buffer'] == 'true' ) {
330
+ $aConf['bufferTime'] = apply_filters( 'fv_player_rtmp_bufferTime', 3 );
331
+ }
332
+
333
+ if( !empty($fv_fp->conf['integrations']['embed_iframe']) && $fv_fp->conf['integrations']['embed_iframe'] == 'true' ) {
334
+ $aConf['embed'] = false;
335
+ } else {
336
+ $aConf['embed'] = array( 'library' => $sPluginUrl.'/flowplayer/fv-flowplayer.min.js', 'script' => $sPluginUrl.'/flowplayer/embed.min.js', 'skin' => $sPluginUrl.'/css/flowplayer.css', 'swf' => $sPluginUrl.'/flowplayer/flowplayer.swf?ver='.$fv_wp_flowplayer_ver, 'swfHls' => $sPluginUrl.'/flowplayer/flowplayerhls.swf?ver='.$fv_wp_flowplayer_ver );
337
+ }
338
+
339
+ if( !isset($fv_fp->conf['ui_speed_increment']) || empty($fv_fp->conf['ui_speed_increment']) || $fv_fp->conf['ui_speed_increment'] == 0.25){
340
+ $aConf['speeds'] = array( 0.25,0.5,0.75,1,1.25,1.5,1.75,2 );
341
+ }elseif($fv_fp->conf['ui_speed_increment'] == 0.1){
342
+ $aConf['speeds'] = array( 0.25,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2 );
343
+ }elseif($fv_fp->conf['ui_speed_increment'] == 0.5){
344
+ $aConf['speeds'] = array( 0.25,0.5,1,1.5,2 );
345
+ }
346
+
347
+ $aConf['video_hash_links'] = empty($fv_fp->aCurArgs['linking']) ? !$fv_fp->_get_option('disable_video_hash_links' ) : $fv_fp->aCurArgs['linking'] === 'true';
348
+
349
if( $sCommercialKey ) $aConf['key'] = $sCommercialKey;
350
if( apply_filters( 'fv_flowplayer_safety_resize', true) && !isset($fv_fp->conf['fixed_size']) || strcmp($fv_fp->conf['fixed_size'],'true') != 0 ) {
351
$aConf['safety_resize'] = true;
366
wp_localize_script( 'flowplayer', 'fv_flowplayer_admin_input', array(true) );
367
wp_localize_script( 'flowplayer', 'fv_flowplayer_admin_js_test', array(true) );
368
}
369
+ if( current_user_can('edit_posts') ) {
370
+ wp_localize_script( 'flowplayer', 'fv_flowplayer_user_edit', array(true) );
371
+ }
372
373
wp_localize_script( 'flowplayer', 'fv_flowplayer_translations', fv_flowplayer_get_js_translations());
374
wp_localize_script( 'flowplayer', 'fv_fp_ajaxurl', site_url().'/wp-admin/admin-ajax.php' );
380
wp_localize_script( 'flowplayer', 'fv_flowplayer_popup', $fv_fp->aPopups );
381
}
382
383
+ if( isset($GLOBALS['fv_fp_scripts']) && count($GLOBALS['fv_fp_scripts']) > 0 ) {
384
foreach( $GLOBALS['fv_fp_scripts'] AS $sKey => $aScripts ) {
385
wp_localize_script( 'flowplayer', $sKey.'_array', $aScripts );
386
}
387
}
388
+
389
+ if( $fv_fp->load_dash ) {
390
+ wp_enqueue_script( 'flowplayer-dash', flowplayer::get_plugin_url().'/flowplayer/flowplayer.dashjs.min.js', array('flowplayer'), $fv_wp_flowplayer_ver, true );
391
+ }
392
+
393
+ if( $fv_fp->load_hlsjs && isset($fv_fp->conf['hlsjs']) && $fv_fp->conf['hlsjs'] == 'true' ) {
394
+ wp_enqueue_script( 'flowplayer-hlsjs', flowplayer::get_plugin_url().'/flowplayer/flowplayer.hlsjs.min.js', array('flowplayer'), $fv_wp_flowplayer_ver, true );
395
+ }
396
+
397
}
398
+
399
+ global $FV_Player_lightbox;
400
+ if( $FV_Player_lightbox->bLoad || isset($fv_fp->conf['lightbox_images']) && $fv_fp->conf['lightbox_images'] == 'true' ) {
401
+ $aConf = array();
402
+ $aConf['lightbox_images'] = !empty($fv_fp->conf['lightbox_images']) && $fv_fp->conf['lightbox_images'] == 'true' ? true : false;
403
+
404
+ wp_enqueue_script( 'fv_player_lightbox', flowplayer::get_plugin_url().'/js/lightbox.js', 'jquery', $fv_wp_flowplayer_ver, true );
405
+ wp_localize_script( 'fv_player_lightbox', 'fv_player_lightbox', $aConf );
406
+
407
+ }
408
+
409
}
410
411
/**
412
* Prints flowplayer javascript content to the bottom of the page.
413
*/
414
function flowplayer_display_scripts() {
415
+ if( flowplayer::is_special_editor() ) {
416
return;
417
}
418
433
Make sure our div won't be wrapped in any P tag and that html attributes don't break the shortcode
434
*/
435
function fv_flowplayer_the_content( $c ) {
436
+ if( flowplayer::is_special_editor() ) {
437
return $c;
438
}
439
503
}
504
add_filter( 'fv_player_caption', 'fv_player_caption' );
505
506
+
507
+ add_filter( 'comment_text', 'fv_player_comment_text', 0 );
508
+ add_filter( 'bp_get_activity_content_body', 'fv_player_comment_text', 6 );
509
+ add_filter( 'bbp_get_topic_content', 'fv_player_comment_text', 0 );
510
+ add_filter( 'bbp_get_reply_content', 'fv_player_comment_text', 0 );
511
+
512
+ function fv_player_comment_text( $comment_text ) {
513
+ if( is_admin() ) return $comment_text;
514
+
515
+ global $fv_fp;
516
+ if( isset($fv_fp->conf['parse_comments']) && $fv_fp->conf['parse_comments'] == 'true' ) {
517
+ add_filter('comment_text', 'do_shortcode');
518
+ add_filter('bbp_get_topic_content', 'do_shortcode', 11);
519
+ add_filter('bbp_get_reply_content', 'do_shortcode', 11);
520
+
521
+ if( stripos($comment_text,'youtube.com') !== false || stripos($comment_text,'youtu.be') !== false ) {
522
+ $pattern = '#(?:<iframe[^>]*?src=[\'"])?((?:https?://|//)?' # Optional URL scheme. Either http, or https, or protocol-relative.
523
+ . '(?:www\.|m\.)?' # Optional www or m subdomain.
524
+ . '(?:' # Group host alternatives:
525
+ . 'youtu\.be/' # Either youtu.be,
526
+ . '|youtube\.com/' # or youtube.com
527
+ . '(?:' # Group path alternatives:
528
+ . 'embed/' # Either /embed/,
529
+ . '|v/' # or /v/,
530
+ . '|watch\?v=' # or /watch?v=,
531
+ . '|watch\?.+&v=' # or /watch?other_param&v=
532
+ . ')' # End path alternatives.
533
+ . ')' # End host alternatives.
534
+ . '([\w-]{11})' # 11 characters (Length of Youtube video ids).
535
+ . '(?![\w-]))(?:.*?</iframe>)?#'; # Rejects if overlong id.
536
+ $comment_text = preg_replace( $pattern, '[fvplayer src="$1"]', $comment_text );
537
+ }
538
+
539
+ if( stripos($comment_text,'vimeo.com') !== false ) {
540
+ $pattern = '#(?:https?://)?(?:www.)?(?:player.)?vimeo.com/(?:[/a-z]*/)*([0-9]{6,11})[?]?.*#';
541
+ $comment_text = preg_replace( $pattern, '[fvplayer src="https://vimeo.com/$1"]', $comment_text );
542
+ }
543
+ }
544
+
545
+ return $comment_text;
546
+ }
547
+
controller/shortcodes.php CHANGED
@@ -28,8 +28,9 @@ add_shortcode('fv_time','fv_player_time');
28
29
function flowplayer_content_handle( $atts, $content = null, $tag ) {
30
global $fv_fp;
31
-
32
- if( $fv_fp->conf['parse_commas'] == 'true' && strcmp($tag,'flowplayer') == 0 ) {
33
34
if( !isset( $atts['src'] ) ) {
35
foreach( $atts AS $key => $att ) {
@@ -120,13 +121,17 @@ function flowplayer_content_handle( $atts, $content = null, $tag ) {
120
'admin_warning' => '',
121
'live' => '',
122
'caption' => '',
123
'logo' => '',
124
'share' => '',
125
'post' => '',
126
- 'speed' => ''
127
), $atts ) );
128
129
- if( $fv_fp->conf['parse_commas'] == 'true' && strcmp($tag,'flowplayer') == 0 ) {
130
$arguments['width'] = preg_replace('/\,/', '', $width);
131
$arguments['height'] = preg_replace('/\,/', '', $height);
132
$arguments['autoplay'] = preg_replace('/\,/', '', $autoplay);
@@ -155,12 +160,16 @@ function flowplayer_content_handle( $atts, $content = null, $tag ) {
155
$arguments['admin_warning'] = $admin_warning;
156
$arguments['live'] = $live;
157
$arguments['caption'] = $caption;
158
$arguments['logo'] = $logo;
159
$arguments['share'] = $share;
160
$arguments['post'] = $post;
161
$arguments['speed'] = $speed;
162
$arguments['src'] = trim( preg_replace('/\,/', '', $src) );
163
-
164
} else {
165
$arguments = shortcode_atts( array(
166
'src' => '',
@@ -192,10 +201,14 @@ function flowplayer_content_handle( $atts, $content = null, $tag ) {
192
'admin_warning' => '',
193
'live' => '',
194
'caption' => '',
195
'logo' => '',
196
'share' => '',
197
'post' => '',
198
- 'speed' => ''
199
), $atts );
200
}
201
@@ -204,6 +217,12 @@ function flowplayer_content_handle( $atts, $content = null, $tag ) {
204
unset($arguments['mobile']);
205
}
206
207
$arguments = apply_filters( 'fv_flowplayer_shortcode', $arguments, $fv_fp, $atts );
208
209
if( $post == 'this' ) {
28
29
function flowplayer_content_handle( $atts, $content = null, $tag ) {
30
global $fv_fp;
31
+ if( !$fv_fp ) return false;
32
+
33
+ if( $fv_fp->_get_option('parse_commas') && strcmp($tag,'flowplayer') == 0 ) {
34
35
if( !isset( $atts['src'] ) ) {
36
foreach( $atts AS $key => $att ) {
121
'admin_warning' => '',
122
'live' => '',
123
'caption' => '',
124
+ 'caption_html' => '',
125
'logo' => '',
126
'share' => '',
127
'post' => '',
128
+ 'speed' => '',
129
+ 'liststyle' => '',
130
+ 'playlist_advance' => '',
131
+ 'linking' => '',
132
), $atts ) );
133
134
+ if( $fv_fp->_get_option('parse_commas') && strcmp($tag,'flowplayer') == 0 ) {
135
$arguments['width'] = preg_replace('/\,/', '', $width);
136
$arguments['height'] = preg_replace('/\,/', '', $height);
137
$arguments['autoplay'] = preg_replace('/\,/', '', $autoplay);
160
$arguments['admin_warning'] = $admin_warning;
161
$arguments['live'] = $live;
162
$arguments['caption'] = $caption;
163
+ $arguments['caption_html'] = $caption_html;
164
$arguments['logo'] = $logo;
165
$arguments['share'] = $share;
166
$arguments['post'] = $post;
167
$arguments['speed'] = $speed;
168
+ $arguments['liststyle'] = $liststyle;
169
+ $arguments['playlist_advance'] = $playlist_advance;
170
$arguments['src'] = trim( preg_replace('/\,/', '', $src) );
171
+ $arguments['linking'] = $linking;
172
+
173
} else {
174
$arguments = shortcode_atts( array(
175
'src' => '',
201
'admin_warning' => '',
202
'live' => '',
203
'caption' => '',
204
+ 'caption_html' => '',
205
'logo' => '',
206
'share' => '',
207
'post' => '',
208
+ 'speed' => '',
209
+ 'liststyle' => '',
210
+ 'playlist_advance' => '',
211
+ 'linking' => '',
212
), $atts );
213
}
214
217
unset($arguments['mobile']);
218
}
219
220
+ foreach( $atts AS $key => $val ) {
221
+ if( stripos($key,'subtitles_') === 0 ) {
222
+ $arguments[$key] = $val;
223
+ }
224
+ }
225
+
226
$arguments = apply_filters( 'fv_flowplayer_shortcode', $arguments, $fv_fp, $atts );
227
228
if( $post == 'this' ) {
css/admin.css CHANGED
@@ -1,4 +1,4 @@
1
- #content .fv-wp-flowplayer-notice-small, .fv-wp-flowplayer-notice-small { position: absolute; top: 1%; left: 1%; z-index: 2; }
2
#content .flowplayer.is-mouseout .fv-wp-flowplayer-notice-small, .flowplayer.is-mouseout .fv-wp-flowplayer-notice-small { top: 1%; -webkit-transition:top .15s .3s;-moz-transition:top .15s .3s;transition:top .15s .3s }
3
#content .flowplayer.is-mouseover.is-ready .fv-wp-flowplayer-notice-small, .flowplayer.is-mouseover.is-ready .fv-wp-flowplayer-notice-small { top: 32px }
4
#content .fv-wp-flowplayer-notice, .fv-wp-flowplayer-notice { color: black !important; background-color: #FFFFE0; border-color: #E6DB55; margin: -1%; padding: 0 0.6em; border-radius: 3px 3px 3px 3px; border-style: solid; border-width: 1px; line-height: 15px; z-index: 100; width: 97%; font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif }
@@ -41,8 +41,63 @@
41
.fv-wp-flowplayer-notice-parsed.level-6 { background: #d0d0d0; }
42
.fv-wp-flowplayer-notice-parsed.level-7 { background: #c8c8c8; }
43
.mail-content-details { height: 200px; overflow: auto; width: 100%; }
44
45
46
47
- .flowplayer-wrapper { width: 54%; display: inline-block; float: right;}
48
- @media only screen and (max-width: 940px) {.flowplayer-wrapper { width: 100%; float: none;} .form-table2.flowplayer-settings {width: 100% !important;}}
1
+ #content .fv-wp-flowplayer-notice-small, .fv-wp-flowplayer-notice-small { position: absolute; top: 1%; left: 1%; z-index: 20; }
2
#content .flowplayer.is-mouseout .fv-wp-flowplayer-notice-small, .flowplayer.is-mouseout .fv-wp-flowplayer-notice-small { top: 1%; -webkit-transition:top .15s .3s;-moz-transition:top .15s .3s;transition:top .15s .3s }
3
#content .flowplayer.is-mouseover.is-ready .fv-wp-flowplayer-notice-small, .flowplayer.is-mouseover.is-ready .fv-wp-flowplayer-notice-small { top: 32px }
4
#content .fv-wp-flowplayer-notice, .fv-wp-flowplayer-notice { color: black !important; background-color: #FFFFE0; border-color: #E6DB55; margin: -1%; padding: 0 0.6em; border-radius: 3px 3px 3px 3px; border-style: solid; border-width: 1px; line-height: 15px; z-index: 100; width: 97%; font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif }
41
.fv-wp-flowplayer-notice-parsed.level-6 { background: #d0d0d0; }
42
.fv-wp-flowplayer-notice-parsed.level-7 { background: #c8c8c8; }
43
.mail-content-details { height: 200px; overflow: auto; width: 100%; }
44
+ .fv-player-interface-form-group td { width:50%; }
45
46
+ .flowplayer-wrapper { width: 70%; display: inline-block; float: right;}
47
+ @media only screen and (max-width: 940px) {.flowplayer-wrapper { width: 100%; float: none;} .form-table2.flowplayer-settings {width: 100% !important;}}
48
49
50
+ #fv-player-popups-settings tr.data:nth-child(even) { background-color: #eee; }
51
+ .fv-player-popup-remove { visibility: hidden; }
52
+ td:hover > .fv-player-popup-remove { visibility: visible; }
53
+ table.fv-player-popup-formats td:first-child { width: 72px }
54
+ #fv_flowplayer_popups .inside label {
55
+ display: initial;
56
+ text-align: inherit;
57
+ }
58
+ #fv-player-popups-settings > tbody > tr > td:nth-child( 1 ) {
59
+ text-align: center;
60
+ max-width: 7px;
61
+ }
62
+
63
+ .fv-metabox-holder {
64
+ padding-top:0!important;
65
+ }
66
+
67
+ .fv-nav-tab-wrapper {
68
+ border-bottom: 0px!important;
69
+ margin-left: 1px!important;
70
+ }
71
+
72
+ .fv-metabox-holder .postbox.hide-if-js {
73
+ display:block;
74
+ }
75
+
76
+ .fv-metabox-holder .postbox:first-child > .hndle, .fv-metabox-holder .postbox:first-child > .handlediv {
77
+ display:none;
78
+ }
79
+
80
+ #fv_flowplayer_admin_tabs .nav-tab-active {
81
+ background-color: #ffffff;
82
+ border-bottom: #ffffff;
83
+ }
84
+
85
+ .wp-admin .user-videos .fv-player-custom-video {
86
+ margin-bottom: 10px;
87
+ }
88
+ .wp-admin .user-videos .flowplayer, .postbox-container .fv-player-custom-video .flowplayer, .usersultra-dahsboard-center .fv-player-custom-video .flowplayer {
89
+ max-width: 432px !important;
90
+ margin: 2px;
91
+ }
92
+ .wp-admin .user-videos .fv-player-custom-video > iframe, .postbox-container .fv-player-custom-video > iframe, .usersultra-dahsboard-center .fv-player-custom-video > iframe {
93
+ display: block;
94
+ overflow: hidden;
95
+ width: 432px;
96
+ height: 243px;
97
+ }
98
+
99
+ #fv_flowplayer_interface_options p.description { line-height: 1.5; margin-bottom: 0; margin-top: 0; }
100
+
101
+ #fp-preview-wrapper{height:360px;width:420px;position:absolute;top:0px;right:50px;}
102
+ #fp-preview-wrapper>.flowplayer{position:relative; height:160px;}
103
+ #fp-preview-wrapper .fp-subtitle{height:50px;}
css/colorbox.css CHANGED
@@ -11,7 +11,8 @@ Avoid changing this area to maintain compatability with future versions of Color
11
#fv_player_boxContent{position:relative; overflow:hidden;}
12
#fv_player_boxLoadedContent{overflow:auto;}
13
#fv_player_boxLoadedContent iframe{display:block; width:100%; height:100%; border:0; background-color: white;}
14
- .fv-flowplayer-shortcode-editor #fv_player_boxTitle{margin:5px; text-align: left; bottom: auto }
15
#fv_player_boxLoadingOverlay, #fv_player_boxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}
16
#fv_player_boxPrevious, #fv_player_boxNext, #fv_player_boxClose, #fv_player_boxSlideshow{cursor:pointer;}
17
@@ -33,4 +34,8 @@ order/nesting of the generated HTML, so that the structure easier to understand.
33
/*#fv_player_boxLoadingOverlay{ text-align: center; background:url(loading.gif) 5px 5px no-repeat #fff;}*/
34
#fv_player_boxClose{position:absolute; top:2px; right:2px; display:block; color:#444; height: 16px; width: 16px; overflow: hidden; text-indent: 25px; background: url("img/uploader-icons.png") -98px 0 no-repeat transparent; border: 0; }
35
#fv_player_boxClose:hover { background-position: -98px 0; }
36
-
11
#fv_player_boxContent{position:relative; overflow:hidden;}
12
#fv_player_boxLoadedContent{overflow:auto;}
13
#fv_player_boxLoadedContent iframe{display:block; width:100%; height:100%; border:0; background-color: white;}
14
+ .fv-flowplayer-shortcode-editor #fv_player_boxTitle{margin:5px; text-align: left; bottom: auto;}
15
+ .fv-flowplayer-shortcode-editor #fv_player_boxClose{top:8px;right:8px;}
16
#fv_player_boxLoadingOverlay, #fv_player_boxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}
17
#fv_player_boxPrevious, #fv_player_boxNext, #fv_player_boxClose, #fv_player_boxSlideshow{cursor:pointer;}
18
34
/*#fv_player_boxLoadingOverlay{ text-align: center; background:url(loading.gif) 5px 5px no-repeat #fff;}*/
35
#fv_player_boxClose{position:absolute; top:2px; right:2px; display:block; color:#444; height: 16px; width: 16px; overflow: hidden; text-indent: 25px; background: url("img/uploader-icons.png") -98px 0 no-repeat transparent; border: 0; }
36
#fv_player_boxClose:hover { background-position: -98px 0; }
37
+
38
+ /* Add video button */
39
+ .wp-media-buttons .fv-wordpress-flowplayer-button span{min-width:28px;min-height: 26px;display:inline-block;background:url('../images/icon.png') no-repeat center center;vertical-align:top;}
40
+ @media only screen and (max-width: 782px) {.wp-media-buttons .fv-wordpress-flowplayer-button span{min-width:24px;display:inline-block;min-height:38px;} }
41
+ @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {.wp-media-buttons .fv-wordpress-flowplayer-button span{background:url('../images/icon@x2.png') no-repeat center center;min-width:32px;background-size:32px auto;min-height:36px;} }
css/flowplayer.css CHANGED
@@ -1,20 +1,58 @@
1
- .flowplayer{position:relative;width:100%;background-size:contain;background-repeat:no-repeat;background-position:center center;display:inline-block; -webkit-backface-visibility: hidden }
2
.flowplayer *{font-weight:inherit;font-family:inherit;font-style:inherit;text-decoration:inherit;font-size:100%;padding:0;border:0;margin:0;list-style-type:none}
3
.flowplayer a:focus{outline:0}
4
- .flowplayer video{width:100%; background: black;}
5
.flowplayer.is-ipad video{-webkit-transform:translateX(-2048px);}
6
.is-ready.flowplayer.is-ipad video{-webkit-transform:translateX(0)}
7
.flowplayer .fp-engine,.flowplayer .fp-ui,.flowplayer .fp-message{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;z-index:1}
8
.flowplayer .fp-message{display:none;text-align:center;padding-top:5%;cursor:default;}
9
.flowplayer .fp-message h2{font-size:120%;margin-bottom:1em}
10
.flowplayer .fp-message p{color:#666;font-size:95%}
11
- .flowplayer .fp-controls{position:absolute;bottom:0;width:100%;height:0;}
12
- .no-background.flowplayer .fp-controls{background-color:transparent !important;background-image:-moz-linear-gradient(transparent,transparent) !important;background-image:-webkit-gradient(linear,0 0,0 100%,from(transparent),to(transparent)) !important}
13
.is-fullscreen.flowplayer .fp-controls{bottom:3px}
14
.is-mouseover.flowplayer .fp-controls{bottom:0}
15
- .flowplayer .fp-waiting{/*display:none;*/margin:19% auto;text-align:center; height: 0; }
16
.flowplayer .fp-waiting *{-webkit-box-shadow:0 0 5px #333;-moz-box-shadow:0 0 5px #333;box-shadow:0 0 5px #333}
17
- .flowplayer .fp-waiting em{width:0em;height:0em;-webkit-border-radius:1em;-moz-border-radius:1em;border-radius:1em;background-color:rgba(255,255,255,0.8);display:inline-block;-webkit-animation:pulse .6s infinite;-moz-animation:pulse .6s infinite;animation:pulse .6s infinite;margin:.3em;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);}
18
.flowplayer .fp-waiting em:nth-child(1){-webkit-animation-delay:.3s;-moz-animation-delay:.3s;animation-delay:.3s}
19
.flowplayer .fp-waiting em:nth-child(2){-webkit-animation-delay:.45s;-moz-animation-delay:.45s;animation-delay:.45s}
20
.flowplayer .fp-waiting em:nth-child(3){-webkit-animation-delay:.6s;-moz-animation-delay:.6s;animation-delay:.6s}
@@ -29,176 +67,244 @@
29
.flowplayer .fp-help em{background:#eee;-webkit-border-radius:.3em;-moz-border-radius:.3em;border-radius:.3em;margin-right:.4em;padding:.3em .6em;color:#333}
30
.flowplayer .fp-help small{font-size:90%;color:#aaa}
31
.flowplayer .fp-help .fp-close{display:block}
32
-
33
- @media (max-width: 600px){.flowplayer .fp-help p{font-size:9px}
34
- }.flowplayer .fp-subtitle{position:absolute;bottom:40px;left:-99999em;z-index:10;text-align:center;width:100%;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .3s;-moz-transition:opacity .3s;transition:opacity .3s;}
35
- .flowplayer .fp-subtitle p{display:inline;background-color:#333;background-color:rgba(51,51,51,0.9);color:#eee;padding:.1em .4em;font-size:16px;line-height:1.6;}
36
- .flowplayer .fp-subtitle p:after{content:'';clear:both}
37
.flowplayer .fp-subtitle.fp-active{left:0;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
38
- .flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-mute,.flowplayer .fp-embed,.flowplayer .fp-close,.flowplayer .fp-play{background-image:url(img/white.png);background-size:37px 300px;}
39
- .is-rtl.flowplayer .fp-fullscreen,.is-rtl.flowplayer .fp-unload,.is-rtl.flowplayer .fp-mute,.is-rtl.flowplayer .fp-embed,.is-rtl.flowplayer .fp-close,.is-rtl.flowplayer .fp-play{background-image:url(img/white_rtl.png)}
40
- .color-light.flowplayer .fp-fullscreen,.color-light.flowplayer .fp-unload,.color-light.flowplayer .fp-mute,.color-light.flowplayer .fp-embed,.color-light.flowplayer .fp-close,.color-light.flowplayer .fp-play{background-image:url(img/black.png);}
41
- .is-rtl.color-light.flowplayer .fp-fullscreen,.is-rtl.color-light.flowplayer .fp-unload,.is-rtl.color-light.flowplayer .fp-mute,.is-rtl.color-light.flowplayer .fp-embed,.is-rtl.color-light.flowplayer .fp-close,.is-rtl.color-light.flowplayer .fp-play{background-image:url(img/black_rtl.png)}
42
- @media (-webkit-min-device-pixel-ratio: 2){.color-light.flowplayer .fp-fullscreen,.color-light.flowplayer .fp-unload,.color-light.flowplayer .fp-mute,.color-light.flowplayer .fp-embed,.color-light.flowplayer .fp-close,.color-light.flowplayer .fp-play{background-image:url(img/black-x2.png)}
43
- .is-rtl.color-light.flowplayer .fp-fullscreen,.is-rtl.color-light.flowplayer .fp-unload,.is-rtl.color-light.flowplayer .fp-mute,.is-rtl.color-light.flowplayer .fp-embed,.is-rtl.color-light.flowplayer .fp-close,.is-rtl.color-light.flowplayer .fp-play{background-image:url(img/black_rtl-x2.png)}
44
- }@media (-webkit-min-device-pixel-ratio: 2){.flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-mute,.flowplayer .fp-embed,.flowplayer .fp-close,.flowplayer .fp-play{background-image:url(img/white-x2.png)}
45
- .is-rtl.flowplayer .fp-fullscreen,.is-rtl.flowplayer .fp-unload,.is-rtl.flowplayer .fp-mute,.is-rtl.flowplayer .fp-embed,.is-rtl.flowplayer .fp-close,.is-rtl.flowplayer .fp-play{background-image:url(img/white_rtl-x2.png)}
46
- }.flowplayer .fp-flash-disabled{background:#333;width:390px;margin:0 auto;position:absolute;bottom:0;color:#fff}
47
- .is-splash.flowplayer .fp-ui,.is-paused.flowplayer .fp-ui{background:url(img/play_white.png) center no-repeat;background-size:12%;}
48
- .is-error.flowplayer .fp-ui{background:url(img/no_play_white.png) center no-repeat;background-size:12%;}
49
- .is-rtl.is-splash.flowplayer .fp-ui,.is-rtl.is-paused.flowplayer .fp-ui{background:url(img/play_white_rtl.png) center no-repeat;background-size:12%}
50
- @media (-webkit-min-device-pixel-ratio: 2){.is-splash.flowplayer .fp-ui,.is-paused.flowplayer .fp-ui{background:url(img/play_white-x2.png) center no-repeat;background-size:12%}
51
- .is-error.flowplayer .fp-ui {background:url(img/no_play_white-x2.png) center no-repeat;background-size:12%}
52
- .is-rtl.is-splash.flowplayer .fp-ui,.is-rtl.is-paused.flowplayer .fp-ui{background:url(img/play_white_rtl-x2.png) center no-repeat;background-size:12%}
53
- }.color-light.is-splash.flowplayer .fp-ui,.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black.png);}
54
- .is-rtl.color-light.is-splash.flowplayer .fp-ui,.is-rtl.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black_rtl.png)}
55
- @media (-webkit-min-device-pixel-ratio: 2){.color-light.is-splash.flowplayer .fp-ui,.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black-x2.png);}
56
- .is-rtl.color-light.is-splash.flowplayer .fp-ui,.is-rtl.color-light.is-paused.flowplayer .fp-ui{background-image:url(img/play_black_rtl-x2.png)}
57
- }.is-fullscreen.flowplayer .fp-ui{background-size:auto}
58
.is-seeking.flowplayer .fp-ui,.is-loading.flowplayer .fp-ui{background-image:none}
59
- .flowplayer .fp-logo{position:absolute;top:auto;left:15px;bottom:30px;cursor:pointer;display:none;z-index:1;}
60
- .flowplayer .fp-logo img{width:100%; border-radius: 0; box-shadow: none; border: 0; background: transparent; }
61
.is-embedded.flowplayer .fp-logo{display:block}
62
.fixed-controls.flowplayer .fp-logo{bottom:15px}
63
- .flowplayer .fp-fullscreen,.flowplayer .fp-unload,.flowplayer .fp-close{position:absolute;top:5px;left:auto;right:5px;display:block;width:30px;height:21px;background-position:12px -197px;cursor:pointer;}
64
- .is-rtl.flowplayer .fp-fullscreen,.is-rtl.flowplayer .fp-unload,.is-rtl.flowplayer .fp-close{right:auto;left:5px;background-position:18px -197px}
65
- .flowplayer .fp-unload,.flowplayer .fp-close{background-position:14px -175px;display:none;}
66
- .is-rtl.flowplayer .fp-unload,.is-rtl.flowplayer .fp-close{background-position:14px -175px}
67
- .flowplayer .fp-play{display:none;width:27px;height:20px;background-position:9px -24px;position:absolute;bottom:0;left:0;}
68
- .is-rtl.flowplayer .fp-play{background-position:18px -24px;left:auto;right:0}
69
- .play-button.flowplayer .fp-play{display:block}
70
- .is-paused.flowplayer .fp-play{background-position:9px 7px;}
71
- .is-rtl.is-paused.flowplayer .fp-play{background-position:18px 7px}
72
.flowplayer.is-ready.is-closeable .fp-unload{display:block}
73
- .flowplayer.is-ready.is-closeable .fp-fullscreen{display:none}
74
- .flowplayer.is-fullscreen .fp-fullscreen{background-position:10px -217px;display:block !important;}
75
- .is-rtl.flowplayer.is-fullscreen .fp-fullscreen{background-position:21px -217px}
76
- .flowplayer.is-fullscreen .fp-unload,.flowplayer.is-fullscreen .fp-close{display:none !important}
77
- .flowplayer .fp-timeline{height:3px;position:relative;overflow:hidden;top:5px;height:10px;margin:0 150px 0 45px;}
78
- .no-volume.flowplayer .fp-timeline{margin-right:60px}
79
- .no-mute.flowplayer .fp-timeline{margin-right:140px}
80
- .no-mute.no-volume.flowplayer .fp-timeline{margin-right:45px}
81
- .play-button.flowplayer .fp-timeline{margin-left:67px}
82
- .is-rtl.flowplayer .fp-timeline{margin:0 45px 0 150px;}
83
- .no-volume.is-rtl.flowplayer .fp-timeline{margin-left:60px}
84
- .no-mute.is-rtl.flowplayer .fp-timeline{margin-left:140px}
85
- .no-mute.no-volume.is-rtl.flowplayer .fp-timeline{margin-left:45px}
86
- .play-button.is-rtl.flowplayer .fp-timeline{margin-right:67px}
87
- .is-long.flowplayer .fp-timeline{margin:0 180px 0 75px;}
88
- .no-volume.is-long.flowplayer .fp-timeline{margin-right:90px}
89
- .no-mute.is-long.flowplayer .fp-timeline{margin-right:75px}
90
- .play-button.is-long.flowplayer .fp-timeline{margin-left:97px}
91
- .is-rtl.is-long.flowplayer .fp-timeline{margin:75px 0 180px 0;}
92
- .no-volume.is-rtl.is-long.flowplayer .fp-timeline{margin-left:90px}
93
- .no-mute.is-rtl.is-long.flowplayer .fp-timeline{margin-left:75px}
94
- .play-button.is-rtl.is-long.flowplayer .fp-timeline{margin-left:97px}
95
- .aside-time.flowplayer .fp-timeline,.no-time.flowplayer .fp-timeline{margin:0 110px 0 5px}
96
- .aside-time.no-volume.flowplayer .fp-timeline,.no-time.no-volume.flowplayer .fp-timeline{margin-right:20px}
97
- .aside-time.no-mute.flowplayer .fp-timeline,.no-time.no-mute.flowplayer .fp-timeline{margin-right:5px}
98
- .play-button.no-time.flowplayer .fp-timeline,.play-button.aside-time.flowplayer .fp-timeline{margin-left:27px}
99
- .is-rtl.aside-time.flowplayer .fp-timeline,.is-rtl.no-time.flowplayer .fp-timeline{margin:0 5px 0 110px}
100
- .is-rtl.aside-time.no-volume.flowplayer .fp-timeline,.is-rtl.no-time.no-volume.flowplayer .fp-timeline{margin-left:20px}
101
- .is-rtl.aside-time.no-mute.flowplayer .fp-timeline,.is-rtl.no-time.no-mute.flowplayer .fp-timeline{margin-left:5px}
102
- .is-rtl.play-button.no-time.flowplayer .fp-timeline,.is-rtl.play-button.aside-time.flowplayer .fp-timeline{margin-right:27px}
103
.flowplayer .fp-buffer,.flowplayer .fp-progress{position:absolute;top:0;left:auto;height:100%;cursor:col-resize}
104
.flowplayer .fp-buffer{-webkit-transition:width .25s linear;-moz-transition:width .25s linear;transition:width .25s linear}
105
.flowplayer .fp-timeline.no-animation .fp-buffer{-webkit-transition:none;-moz-transition:none;transition:none}
106
.flowplayer.is-touch .fp-timeline{overflow:visible}
107
- .flowplayer.is-touch .fp-progress{-webkit-transition:width .2s linear;-moz-transition:width .2s linear;transition:width .2s linear}
108
.flowplayer.is-touch .fp-timeline.is-dragging .fp-progress{-webkit-transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear;-moz-transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear;transition:right .1s linear,border .1s linear,top .1s linear,left .1s linear}
109
- .flowplayer.is-touch.is-mouseover .fp-progress:after,.flowplayer.is-touch.is-mouseover .fp-progress:before{content:'';display:block;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;position:absolute;right:-5px}
110
.flowplayer.is-touch.is-rtl.is-mouseover .fp-progress:after,.flowplayer.is-touch.is-rtl.is-mouseover .fp-progress:before{right:auto;left:-5px}
111
.flowplayer.is-touch.is-rtl.is-mouseover .fp-progress:after{left:-10px;-webkit-box-shadow:-1px 0 4px rgba(0,0,0,0.5);-moz-box-shadow:-1px 0 4px rgba(0,0,0,0.5);box-shadow:-1px 0 4px rgba(0,0,0,0.5)}
112
.flowplayer.is-touch.is-mouseover .fp-progress:before{width:10px;height:10px}
113
- .flowplayer.is-touch.is-mouseover .fp-progress:after{height:10px;width:10px;top:-5px;right:-10px;border:5px solid rgba(255,255,255,0.65);-webkit-box-shadow:1px 0 4px rgba(0,0,0,0.5);-moz-box-shadow:1px 0 4px rgba(0,0,0,0.5);box-shadow:1px 0 4px rgba(0,0,0,0.5)}
114
- .flowplayer.is-touch.is-mouseover .fp-timeline.is-dragging .fp-progress:after{border:10px solid #fff;-webkit-border-radius:20px;-moz-border-radius:20px;border-radius:20px;-webkit-transition:inherit;-moz-transition:inherit;transition:inherit;top:-10px;right:-15px}
115
.flowplayer.is-touch.is-rtl.is-mouseover .fp-timeline.is-dragging .fp-progress:after{left:-15px;right:auto;border:10px solid #fff}
116
- .flowplayer .fp-volume{position:absolute;top:7.5px;right:5px;}
117
- .is-rtl.flowplayer .fp-volume{right:auto;left:5px}
118
- .flowplayer .fp-mute{position:relative;width:10px;height:15px;float:left;top:-5px;cursor:pointer;background-position:-2px -99px;}
119
- .is-rtl.flowplayer .fp-mute{float:right;background-position:-25px -99px}
120
.no-mute.flowplayer .fp-mute{display:none}
121
- .flowplayer .fp-volumeslider{width:90px;height:5px;cursor:col-resize;float:left;}
122
.is-rtl.flowplayer .fp-volumeslider{float:right}
123
.no-volume.flowplayer .fp-volumeslider{display:none}
124
.flowplayer .fp-volumelevel{height:100%}
125
- .flowplayer .fp-time{text-shadow:0 0 1px #000;font-size:12px;font-weight:bold;color:#fff;width:100%;}
126
.flowplayer .fp-time.is-inverted .fp-duration{display:none}
127
.flowplayer .fp-time.is-inverted .fp-remaining{display:inline}
128
- .flowplayer .fp-time em{width:37px;height:10px;line-height:10px;text-align:center;position:absolute;bottom:5px}
129
.no-time.flowplayer .fp-time{display:none}
130
.is-long.flowplayer .fp-time em{width:65px}
131
- .flowplayer .fp-elapsed{left:5px;}
132
- .play-button.flowplayer .fp-elapsed{left:27px}
133
- .is-rtl.flowplayer .fp-elapsed{left:auto;right:5px;}
134
- .play-button.is-rtl.flowplayer .fp-elapsed{right:27px}
135
- .flowplayer .fp-remaining,.flowplayer .fp-duration{right:110px;color:#eee;}
136
- .no-volume.flowplayer .fp-remaining,.no-volume.flowplayer .fp-duration{right:20px}
137
- .no-mute.flowplayer .fp-remaining,.no-mute.flowplayer .fp-duration{right:100px}
138
- .no-mute.no-volume.flowplayer .fp-remaining,.no-mute.no-volume.flowplayer .fp-duration{right:5px}
139
- .is-rtl.flowplayer .fp-remaining,.is-rtl.flowplayer .fp-duration{right:auto;left:110px;}
140
- .no-volume.is-rtl.flowplayer .fp-remaining,.no-volume.is-rtl.flowplayer .fp-duration{left:20px}
141
- .no-mute.is-rtl.flowplayer .fp-remaining,.no-mute.is-rtl.flowplayer .fp-duration{left:100px}
142
- .no-mute.no-volume.is-rtl.flowplayer .fp-remaining,.no-mute.no-volume.is-rtl.flowplayer .fp-duration{left:5px}
143
.flowplayer .fp-remaining{display:none}
144
- .flowplayer.color-light .fp-time{color:#222;text-shadow:0 0 1px #fff}
145
- .flowplayer.color-light .fp-remaining,.flowplayer.color-light .fp-duration{color:#666}
146
- .flowplayer.aside-time .fp-time{position:absolute;top:5px;left:5px;bottom:auto !important;width:85px;}
147
.flowplayer.aside-time .fp-time strong,.flowplayer.aside-time .fp-time em{position:static}
148
- .flowplayer.aside-time .fp-time .fp-elapsed{margin-right:5px;}
149
- .is-rtl.flowplayer.aside-time .fp-time .fp-elapsed{margin-right:auto;margin-left:5px}
150
- .flowplayer.is-long.aside-time .fp-time{width:130px}
151
.flowplayer.is-splash,.flowplayer.is-poster{cursor:pointer;}
152
- .flowplayer.is-splash .fp-controls,.flowplayer.is-poster .fp-controls,.flowplayer.is-splash .fp-fullscreen,.flowplayer.is-poster .fp-fullscreen,.flowplayer.is-splash .fp-unload,.flowplayer.is-poster .fp-unload,.flowplayer.is-splash .fp-time,.flowplayer.is-poster .fp-time,.flowplayer.is-splash .fp-embed,.flowplayer.is-poster .fp-embed{display:none !important}
153
.flowplayer.is-poster .fp-engine{top:-9999em}
154
- .flowplayer.is-loading .fp-waiting {height: 1em;}
155
- .flowplayer.is-loading .fp-waiting em {width:1em;height:1em;}
156
.flowplayer.is-loading .fp-controls,.flowplayer.is-loading .fp-time{display:none}
157
.flowplayer.is-loading .fp-ui{background-position:-9999em}
158
.flowplayer.is-loading video.fp-engine{position:absolute;top:-9999em}
159
- .flowplayer.is-seeking .fp-waiting {height: 1em;}
160
- .flowplayer.is-seeking .fp-waiting em {width:1em;height:1em;}
161
- .flowplayer.is-playing{background-image:none !important;background-color:#333;}
162
.flowplayer.is-playing.hls-fix.is-finished .fp-engine{position:absolute;top:-9999em}
163
- .flowplayer.is-fullscreen{position:fixed !important;top:0 !important;left:0 !important;border:0 !important;margin:0 !important;width:100% !important;height:100% !important;max-width:100% !important;max-height:100% !important;z-index:99999 !important;-webkit-box-shadow:0 !important;-moz-box-shadow:0 !important;box-shadow:0 !important;background-image:none !important;background-color:#000 !important;}
164
.is-rtl.flowplayer.is-fullscreen{left:auto !important;right:0 !important}
165
.flowplayer.is-error{border:1px solid #909090;background:#fdfdfd !important;}
166
- .flowplayer.is-error h2{font-weight:bold;font-size:large;margin-top:10%}
167
.flowplayer.is-error .fp-message{display:block}
168
.flowplayer.is-error object,.flowplayer.is-error video,.flowplayer.is-error .fp-controls,.flowplayer.is-error .fp-time,.flowplayer.is-error .fp-subtitle{display:none}
169
- .flowplayer.is-ready.is-muted .fp-mute{opacity:.5;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50)}
170
- .flowplayer.is-mouseout .fp-controls{all:0;-webkit-transition:height .15s ease .3s;-moz-transition:all .15s ease .3s;transition:all .15s ease .3s}
171
.flowplayer.is-mouseout .fp-timeline{margin:0 !important}
172
.flowplayer.is-mouseout .fp-timeline{-webkit-transition:height .15s .3s,top .15s .3s,margin .15s .3s;-moz-transition:height .15s .3s,top .15s .3s,margin .15s .3s;transition:height .15s .3s,top .15s .3s,margin .15s .3s;height:4px;top:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}
173
- .flowplayer.is-mouseout .fp-fullscreen,.flowplayer.is-mouseout .fp-unload,.flowplayer.is-mouseout .fp-elapsed,.flowplayer.is-mouseout .fp-remaining,.flowplayer.is-mouseout .fp-duration,.flowplayer.is-mouseout .fp-embed,.flowplayer.is-mouseout .fp-volume,.flowplayer.is-mouseout .fp-play{opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);-webkit-transition:opacity .15s ease .3s;-moz-transition:opacity .15s ease .3s;transition:opacity .15s ease .3s;}
174
- .flowplayer.is-mouseover .fp-controls,.flowplayer.fixed-controls .fp-controls{height:20px}
175
- .flowplayer.is-mouseover .fp-fullscreen,.flowplayer.fixed-controls .fp-fullscreen,.flowplayer.is-mouseover .fp-unload,.flowplayer.fixed-controls .fp-unload,.flowplayer.is-mouseover .fp-elapsed,.flowplayer.fixed-controls .fp-elapsed,.flowplayer.is-mouseover .fp-remaining,.flowplayer.fixed-controls .fp-remaining,.flowplayer.is-mouseover .fp-duration,.flowplayer.fixed-controls .fp-duration,.flowplayer.is-mouseover .fp-embed,.flowplayer.fixed-controls .fp-embed,.flowplayer.is-mouseover .fp-logo,.flowplayer.fixed-controls .fp-logo,.flowplayer.is-mouseover .fp-volume,.flowplayer.fixed-controls .fp-volume,.flowplayer.is-mouseover .fp-play,.flowplayer.fixed-controls .fp-play{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
176
.flowplayer.fixed-controls .fp-volume{display:block}
177
- .flowplayer.fixed-controls .fp-controls{bottom:-20px;}
178
.is-fullscreen.flowplayer.fixed-controls .fp-controls{bottom:0}
179
- .flowplayer.fixed-controls .fp-time em{bottom:-15px;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);}
180
- .is-fullscreen.flowplayer.fixed-controls .fp-time em{bottom:5px}
181
.flowplayer.is-disabled .fp-progress{background-color:#999}
182
.flowplayer.is-flash-disabled{background-color:#333;}
183
.flowplayer.is-flash-disabled object.fp-engine{z-index:100}
184
.flowplayer.is-flash-disabled .fp-flash-disabled{display:block;z-index:101}
185
- .flowplayer .fp-embed{position:absolute;top:5px;left:5px;display:block;width:25px;height:20px;background-position:3px -237px;}
186
- .is-rtl.flowplayer .fp-embed{background-position:22px -237px;left:auto;right:5px}
187
-
188
- .flowplayer.aside-time .fp-embed{left:85px;}
189
- .is-rtl.flowplayer.aside-time .fp-embed{left:auto;right:85px}
190
- .flowplayer.aside-time.is-embedding .fp-time{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
191
- .flowplayer.is-long.aside-time .fp-embed{left:130px;}
192
- .is-rtl.flowplayer.is-long.aside-time .fp-embed{left:auto;right:130px}
193
- .flowplayer.no-time .fp-embed{left:5px !important;}
194
- .is-rtl.flowplayer.no-time .fp-embed{left:auto;right:5px !important}
195
.flowplayer.is-live .fp-timeline,.flowplayer.is-live .fp-duration,.flowplayer.is-live .fp-remaining{display:none}
196
.flowplayer .fp-context-menu{position:absolute;display:none;z-index:1001;background-color:#fff;padding:10px;border:1px solid #aaa;-webkit-box-shadow:0 0 4px #888;-moz-box-shadow:0 0 4px #888;box-shadow:0 0 4px #888;width:170px;}
197
- .flowplayer .fp-context-menu li{text-align:center;padding:10px;color:#444;margin:0 -10px 0 -10px;}
198
- .flowplayer .fp-context-menu li a{color:#00a7c8;font-size:110%}
199
.flowplayer .fp-context-menu li:hover:not(.copyright){background-color:#eee}
200
.flowplayer .fp-context-menu li.copyright{margin:0;padding-left:110px;background-image:url("img/flowplayer.png");background-repeat:no-repeat;background-size:100px 20px;background-position:5px 5px;border-bottom:1px solid #bbb;}
201
- @media (-webkit-min-device-pixel-ratio: 2){.flowplayer .fp-context-menu li.copyright{background-image:url("img/flowplayer@2x.png")}
202
}@-moz-keyframes pulse{0%{opacity:0}
203
100%{opacity:1}
204
}@-webkit-keyframes pulse{0%{opacity:0}
@@ -209,24 +315,36 @@
209
100%{opacity:1}
210
}@keyframes pulse{0%{opacity:0}
211
100%{opacity:1}
212
- }.flowplayer .fp-controls{background-color:#333;background-color:rgba(51,51,51,0.6)}
213
- .flowplayer.fixed-controls .fp-controls{background-color:#333}
214
- .flowplayer .fp-timeline{background-color:#666}
215
- .flowplayer .fp-buffer{background-color:#eee}
216
- .flowplayer .fp-progress{background-color:#00a7c8}
217
- .flowplayer .fp-volumeslider{background-color:#000}
218
- .flowplayer .fp-volumelevel{background-color:#fff}
219
- .flowplayer .fp-play{height:24px}
220
- .flowplayer.is-touch.is-mouseover .fp-progress:before{background-color:#00a7c8}
221
- .flowplayer.color-light .fp-controls{background-color:rgba(255,255,255,0.6)}
222
- .flowplayer.color-light.fixed-controls .fp-controls{background-color:#fff}
223
- .flowplayer.color-light .fp-volumeslider{background-color:#ddd}
224
- .flowplayer.color-light .fp-volumelevel{background-color:#222}
225
- .flowplayer.color-alt .fp-progress{background-color:#fff}
226
- .flowplayer.color-alt.is-touch.is-mouseover .fp-progress:before{background-color:#fff}
227
- .flowplayer.color-alt .fp-buffer{background-color:#999}
228
- .flowplayer.color-alt2 .fp-progress{background-color:#900}
229
- .flowplayer.color-alt2.is-touch.is-mouseover .fp-progress:before{background-color:#900}
230
231
.flowplayer .fp-embed-code{display:none;}
232
.flowplayer .fvp-share-bar{opacity:0;display:none;position:absolute;top:0px;left:0px;background-color:rgba(0, 0, 0, 0.3);font-size:12px;width:100%}
@@ -234,6 +352,12 @@
234
.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;}
235
.flowplayer.is-embedding .fp-embed,.flowplayer.is-embedding .fvp-share-bar{display:block;opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
236
237
/* style reset first */
238
.flowplayer .fvp-sharing ul {
239
list-style: none !important;
@@ -244,13 +368,13 @@
244
/*clear: both;
245
width: 102px;*/
246
min-height: 24px;
247
- margin: 7px auto !important;
248
padding: 0 !important;
249
float: left;
250
font-family: "Lucida Console", Monaco, monospace;
251
}
252
.fvp-share-bar {
253
- line-height: 24px !important;
254
}
255
.fvp-share-bar label {
256
text-align: center !important;
@@ -270,9 +394,9 @@
270
border: none !important;
271
background: none !important;
272
}
273
- #content .flowplayer a,
274
.flowplayer a,
275
- .flowplayer a:hover,
276
.fvp-share-bar .fvp-sharing a {
277
color: #fff !important;
278
text-shadow: none !important;
@@ -292,6 +416,11 @@
292
overflow: hidden;
293
background: url("img/flp-share-icons.png") no-repeat;
294
text-indent: -9999em;
295
}
296
297
.fvp-share-bar .fvp-sharing a.sharing-twitter {
@@ -305,6 +434,12 @@
305
.fvp-share-bar .fvp-sharing a.sharing-email {
306
background-position: 0 -84px;
307
}
308
.flowplayer .fvp-share-bar label{float:left;color:#fff;padding: 6px 10px;}
309
.flowplayer .fp-embed{display:none}
310
/*.flowplayer.is-mouseover.is-ready .fp-embed-code{display:block}*/
@@ -320,19 +455,53 @@
320
/*#content .flowplayer.is-ready .fp-embed-code.visible textarea, .flowplayer.is-ready .fp-embed-code.visible textarea { height: 140px; }*/
321
.fvp-share-bar a.embed-code-toggle { font-weight: bold; color: white; }
322
323
- .flowplayer .fp-prev, .flowplayer .fp-next{/* next and prev buttons */position:absolute;top:44%;cursor:pointer;-webkit-transition:opacity .5s;-moz-transition:opacity .5s;transition:opacity .5s;background:url("img/playlist-buttons.png");opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);height:20px;width:12px;}
324
- .is-mouseover.is-ready.flowplayer .fp-prev,.is-mouseover.is-ready.flowplayer .fp-next{opacity:1;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100)}
325
- .flowplayer .fp-prev{left:-20px;background-position:0 -200px;}
326
- .flowplayer .fp-prev:hover{background-position:0 -300px}
327
- .flowplayer .fp-next{right:-20px;background-position:0 -400px;}
328
- .flowplayer .fp-next:hover{background-position:0 -500px}
329
330
.fp-playlist-external { text-align:center; margin-bottom: 24px;}
331
- .fp-playlist-external a { width:148px; display:inline-block; vertical-align:top; margin:5px 0px 0px 0px;}
332
- .fp-playlist-external a span { display:block;width:120px;height:80px;margin:0 10px;-webkit-transition:all .3s;-moz-transition:all .3s;transition:all .3s;border:4px solid #fff;background:gray;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;background-size:auto 100px;background-position:center;}
333
.fp-playlist-external a:hover span { border-color:#ccc }
334
- .fp-playlist-external a.is-active span { border-color:#52b9e4; }
335
- .fp-playlist-external a.is-active { color:#52b9e4;-webkit-transition:all .3s;-moz-transition:all .3s;transition:all .3s; }
336
337
.add_media span.wp-media-buttons-icon {
338
background: url("img/media-button.png") no-repeat scroll left top;
@@ -376,14 +545,14 @@ a #add-format, a #add-rtmp {
376
.flowplayer.video1, .flowplayer.video2, .flowplayer.video3, .flowplayer.video4, .flowplayer.video5, .flowplayer.video6, .flowplayer.video7, .flowplayer.video8, .flowplayer.video9, .flowplayer.video10, .flowplayer.video11, .flowplayer.video12, .flowplayer.video13, .flowplayer.video14, .flowplayer.video15, .flowplayer.video16 { background-image: none !important; }
377
378
.flowplayer .fp-volume { text-align: left; }
379
- #content .flowplayer a, .flowplayer a, .flowplayer a:hover { text-decoration: none; border-bottom: none; }
380
381
.flowplayer .wpfp_custom_ad { display: none; overflow: hidden; }
382
.flowplayer .wpfp_custom_ad img { height: auto; }
383
.flowplayer.is-playing .wpfp_custom_ad, .flowplayer.is-ready .wpfp_custom_ad { display: block; }
384
.flowplayer.is-poster .wpfp_custom_ad { display: none; }
385
386
- .fv_fp_close { position: absolute; right: 2px; top: 2px; z-index: 2; }
387
.fv_fp_close a { display: block; width: 16px; height: 16px; background: url(img/exit_btn.png) }
388
389
.wpfp_custom_ad_content h1, .wpfp_custom_ad_content h2, .wpfp_custom_ad_content h3, .wpfp_custom_ad_content h4, .wpfp_custom_ad_content h5, .wpfp_custom_ad_content p { padding: 0 5px 2px 5px; margin: 0 5px 2px 5px; }
@@ -391,8 +560,13 @@ a #add-format, a #add-rtmp {
391
.flowplayer.alignleft { margin-left: 10px; margin-bottom: 10px; }
392
.flowplayer.alignright { margin-right: 10px; margin-bottom: 10px; }
393
394
- .flowplayer.no-controlbar .fp-controls{display:none}
395
- .flowplayer.no-controlbar .fp-time{display:none}
396
397
p.fp-caption { text-align: center; }
398
@@ -400,54 +574,60 @@ p.fp-caption { text-align: center; }
400
.is-splash.flowplayer .fv-player-buttons, .is-loading.flowplayer .fv-player-buttons {
401
display: none;
402
}
403
- .fv-player-buttons-center {
404
position: absolute;
405
left: 50%;
406
margin-left: -34px;
407
- bottom: 20px;
408
}
409
- .fv-player-buttons > ul {
410
position: relative;
411
- z-index: 2; /* make clickable */
412
display: block;
413
opacity: 1;
414
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
415
margin: 0 auto;
416
}
417
- .fv-player-buttons > ul:last {
418
margin-left: 0px;
419
}
420
- .fv-player-buttons-right {
421
position: absolute;
422
right: 0;
423
- bottom: 20px;
424
}
425
- .fv-player-buttons-right > ul {
426
/*position: relative;
427
left: -95%;*/
428
}
429
- .fv-player-buttons-left {
430
position: absolute;
431
left: 0;
432
- bottom: 20px;
433
}
434
- .fv-player-buttons-left > ul {
435
left: 0;
436
}
437
- .is-mouseout .fv-player-buttons > ul {
438
opacity: 0;
439
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
440
- /* same transition as other ui elements like fullscreen */
441
-webkit-transition: opacity .15s ease .3s;
442
-moz-transition: opacity .15s ease .3s;
443
transition: opacity .15s ease .3s;
444
}
445
- .fv-player-buttons li {
446
display: inline-block;
447
float: left;
448
margin: 0 0.3em;
449
}
450
- .fv-player-buttons a {
451
display: inline-block;
452
float: left;
453
padding: 0.4ex 0.6ex;
@@ -470,22 +650,22 @@ p.fp-caption { text-align: center; }
470
font-size: 14px;
471
box-sizing: border-box;
472
}
473
- .fv-player-buttons a:active {
474
background-color: rgba(255,255,255,0.85);
475
}
476
- .fv-player-buttons a.current {
477
color: #00a7c8;
478
background-color: #555;
479
cursor: default;
480
}
481
- .fv-player-buttons a.fv_sp_slower {
482
-webkit-border-radius: 1ex 0 0 1ex;
483
-moz-border-radius: 1ex 0 0 1ex;
484
border-radius: 1ex 0 0 1ex;
485
margin-right: 2px;
486
width: 2.05em;
487
}
488
- .fv-player-buttons a.fv_sp_faster {
489
-webkit-border-radius: 0 1ex 1ex 0;
490
-moz-border-radius: 0 1ex 1ex 0;
491
border-radius: 0 1ex 1ex 0;
@@ -529,3 +709,243 @@ article .entry-content .fvfp_admin_error p { line-height: 18px; }
529
.is-ready .fvfp_duration, .is-loading .fvfp_duration { display: none; }
530
.fp-playlist-external .dur { margin-left: 10px; display: none; }
531
1
+ @font-face {
2
+ font-family: 'fpicons';
3
+ src:url('fonts/fpicons.eot?ver=yg5dv7');
4
+ src:url('fonts/fpicons.eot?ver=yg5dv7#iefix') format('embedded-opentype'),
5
+ url('fonts/fpicons.woff?ver=yg5dv7') format('woff'),
6
+ url('fonts/fpicons.ttf?ver=yg5dv7') format('truetype'),
7
+ url('fonts/fpicons.svg?ver=yg5dv7#fpicons') format('svg');
8
+ font-weight: normal;
9
+ font-style: normal;
10
+ }
11
+
12
+ [class^="fp-i-"], [class*=" fp-i-"] {
13
+ font-family: 'fpicons';
14
+ speak: none;
15
+ font-style: normal;
16
+ font-weight: normal;
17
+ font-variant: normal;
18
+ text-transform: none;
19
+ line-height: 1;
20
+
21
+ /* Better Font Rendering =========== */
22
+ -webkit-font-smoothing: antialiased;
23
+ -moz-osx-font-smoothing: grayscale;
24
+ }
25
+ .flowplayer{position:relative;width:100%;counter-increment:flowplayer;background-size:contain;background-repeat:no-repeat;background-position:center center;display:inline-block;}
26
.flowplayer *{font-weight:inherit;font-family:inherit;font-style:inherit;text-decoration:inherit;font-size:100%;padding:0;border:0;margin:0;list-style-type:none}
27
.flowplayer a:focus{outline:0}
28
+ .flowplayer video{width:100%;-ms-transform: translateY(0) translateX(0);-webkit-transform: translateY(0) translateX(0);transform: translateY(0) translateX(0);}
29
.flowplayer.is-ipad video{-webkit-transform:translateX(-2048px);}
30
.is-ready.flowplayer.is-ipad video{-webkit-transform:translateX(0)}
31
+ .flowplayer .fp-player{position:absolute;top:0;left:0;width:100%;height:100%}
32
.flowplayer .fp-engine,.flowplayer .fp-ui,.flowplayer .fp-message{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;z-index:1}
33
+ .flowplayer .fp-ui{z-index:11}
34
.flowplayer .fp-message{display:none;text-align:center;padding-top:5%;cursor:default;}
35
.flowplayer .fp-message h2{font-size:120%;margin-bottom:1em}
36
.flowplayer .fp-message p{color:#666;font-size:95%}
37
+ .flowplayer .fp-title{line-height:30px;font-weight:normal;font-family:'myriad pro',Helvetica,Arial,sans-serif;font-size:11px;cursor:default;color:#fff;width:auto;max-width:50%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;float:left;padding:0 20px;}
38
+ .is-rtl.flowplayer .fp-title{float:right}
39
+ .aside-time.flowplayer .fp-title{display:none !important}
40