FV Flowplayer Video Player - Version 7.3.7.727

Version Description

  • 2019/01/24 =

  • Database - performance fix

  • Bugfix - fullscreen mode corners when using the YouTuby skin

  • Bugfix - FV Player Meta Box (Custom Videos) fixes

  • Bugfix - WP Media Library not loading for FV Player screen

  • Bugfix - S3 Browser not loading FV Player screen and Gutenberg (block editor)

Download this release

Release Info

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

Code changes from version 7.3.6.727 to 7.3.7.727

Files changed (53) hide show
  1. controller/backend.php +0 -0
  2. controller/editor.php +4 -1
  3. controller/frontend.php +0 -0
  4. css/colorbox.css +0 -0
  5. css/flowplayer.css +2 -1
  6. css/fonts/fpicons.eot +0 -0
  7. css/fonts/fpicons.svg +0 -0
  8. css/fonts/fpicons.ttf +0 -0
  9. css/fonts/fpicons.woff +0 -0
  10. css/img/exit_btn.png +0 -0
  11. css/img/flowplayer.png +0 -0
  12. css/img/no_play_white-x2.png +0 -0
  13. css/img/no_play_white.png +0 -0
  14. css/img/techinfo.png +0 -0
  15. css/shortcode-editor.css +166 -166
  16. flowplayer.php +2 -2
  17. flowplayer/embed.min.js +0 -0
  18. flowplayer/flowplayer.swf +0 -0
  19. flowplayer/flowplayerhls.swf +0 -0
  20. flowplayer/fv-flowplayer.min.js +3 -1
  21. js/s3-browser.js +21 -10
  22. js/shortcode-editor.js +0 -0
  23. models/checker.php +0 -0
  24. models/custom-videos.php +36 -33
  25. models/db-video.php +2 -2
  26. models/db.php +3 -3
  27. models/flowplayer-frontend.php +0 -0
  28. models/flowplayer.php +0 -0
  29. models/list-table.php +2 -0
  30. models/media-browser-s3.php +6 -0
  31. readme.txt +12 -4
  32. test/integration/backend/profileVideosTest.php +0 -47
  33. test/integration/backend/s3BrowserAjaxTest.php +0 -61
  34. test/integration/backend/settingsTest.php +0 -45
  35. test/integration/backend/testProfileScreen.html +0 -54
  36. test/integration/backend/testSettingsScreen.html +0 -2073
  37. test/integration/backend/videointelligenceInstallTest.php +0 -80
  38. test/integration/bootstrap.php +0 -38
  39. test/integration/frontend/1-shortcodesTest.php +0 -52
  40. test/integration/frontend/dbTest.php +0 -121
  41. test/integration/frontend/endActionsTest.php +0 -164
  42. test/integration/frontend/player-data.json +0 -1
  43. test/integration/frontend/shortcodesLightboxTest.php +0 -168
  44. test/integration/frontend/shortcodesPlaylistTest.php +0 -156
  45. test/integration/frontend/testSimpleShortcode.html +0 -83
  46. test/integration/frontend/videoPositionSavingTest.php +0 -151
  47. test/integration/fv-player-ajax-unittest-case.php +0 -67
  48. test/integration/fv-player-unittest-case.php +0 -76
  49. test/integration/phpunit.xml +0 -8
  50. test/unit/bootstrap.php +0 -3
  51. test/unit/controller/frontendTest.php +0 -209
  52. test/unit/phpunit.xml +0 -7
  53. test/wp-global-empty-mocks.php +0 -225
controller/backend.php CHANGED
File without changes
controller/editor.php CHANGED
@@ -69,10 +69,13 @@ function flowplayer_add_media_button() {
69
add_action('media_upload_fvplayer_video', '__return_false'); // keep for compatibility!
70
71
72
- add_action( 'block_editor_meta_box_hidden_fields', 'fv_wp_flowplayer_gutenberg_editor_load' );
73
74
function fv_wp_flowplayer_gutenberg_editor_load() {
75
add_action( 'admin_footer', 'fv_wp_flowplayer_edit_form_after_editor', 0 );
76
}
77
78
add_action( 'edit_form_after_editor', 'fv_wp_flowplayer_edit_form_after_editor' );
69
add_action('media_upload_fvplayer_video', '__return_false'); // keep for compatibility!
70
71
72
+ add_action( 'enqueue_block_editor_assets', 'fv_wp_flowplayer_gutenberg_editor_load' );
73
74
function fv_wp_flowplayer_gutenberg_editor_load() {
75
add_action( 'admin_footer', 'fv_wp_flowplayer_edit_form_after_editor', 0 );
76
+
77
+ // if we are loading for Gutenberg, then forget about the load method for old editor
78
+ remove_action( 'edit_form_after_editor', 'fv_wp_flowplayer_edit_form_after_editor' );
79
}
80
81
add_action( 'edit_form_after_editor', 'fv_wp_flowplayer_edit_form_after_editor' );
controller/frontend.php CHANGED
File without changes
css/colorbox.css CHANGED
File without changes
css/flowplayer.css CHANGED
@@ -51,7 +51,8 @@
51
-webkit-box-shadow: 0 !important;
52
box-shadow: 0 !important;
53
background-image: none !important;
54
- background-color: #333; }
55
.flowplayer.is-fullscreen .fp-player {
56
background-color: #333; }
57
.flowplayer.is-fullscreen .fp-fullscreen:before {
51
-webkit-box-shadow: 0 !important;
52
box-shadow: 0 !important;
53
background-image: none !important;
54
+ background-color: #333;
55
+ border-radius: 0; }
56
.flowplayer.is-fullscreen .fp-player {
57
background-color: #333; }
58
.flowplayer.is-fullscreen .fp-fullscreen:before {
css/fonts/fpicons.eot CHANGED
File without changes
css/fonts/fpicons.svg CHANGED
File without changes
css/fonts/fpicons.ttf CHANGED
File without changes
css/fonts/fpicons.woff CHANGED
File without changes
css/img/exit_btn.png CHANGED
File without changes
css/img/flowplayer.png CHANGED
File without changes
css/img/no_play_white-x2.png CHANGED
File without changes
css/img/no_play_white.png CHANGED
File without changes
css/img/techinfo.png CHANGED
File without changes
css/shortcode-editor.css CHANGED
@@ -1,166 +1,166 @@
1
- #fv_player_boxLoadedContent{ background-color:white; }
2
- #fv-player-shortcode-editor { background-color: white; }
3
- .fv-wp-flowplayer-notice { background-color: #FFFFE0; border-color: #E6DB55; margin: 5px 0 15px; padding: 0 0.6em; border-radius: 3px 3px 3px 3px; border-style: solid; border-width: 1px; }
4
- .fv-wp-flowplayer-notice.fv-wp-flowplayer-note { background-color: #F8F8F8; border-color: #E0E0E0; }
5
- .fv-wp-flowplayer-notice p { font-family: sans-serif; font-size: 12px; margin: 0.5em 0; padding: 2px; }
6
- .fv_wp_flowplayer_playlist_remove { display: none; }
7
- .fv-player-tabs-header { padding:6px 0 12px; }
8
- #fv-flowplayer-playlist table { border-bottom: 1px #eee solid; }
9
- #fv-player-shortcode-editor table input[type=text], #fv-flowplayer-playlist table input[type=text].with-button { width: 93%; }
10
- #fv-player-shortcode-editor table input[type=text].half-field { width: 37%; }
11
- #fv-player-shortcode-editor .fv-player-tab-video-files table input.with-button { width: 75%; }
12
- #fv-player-shortcode-editor .fv-player-tab-subtitles table input.with-button { width: 70%; }
13
- #fv-player-shortcode-editor table input.fv_wp_flowplayer_field_subtitles { width: 82%; }
14
- #fv-player-shortcode-editor table input.fv_wp_flowplayer_field_subtitles.with-button { width: 59%; }
15
- #fv-player-shortcode-editor table select.fv_wp_flowplayer_field_subtitles_lang { width: 10%;float:left; margin: 1px 2px; height: 27px }
16
- #fv-flowplayer-playlist table tr.video-size { display: none; }
17
- #fv-flowplayer-playlist table tr#fv_wp_flowplayer_add_format_wrapper { display: none; }
18
- #fv-flowplayer-playlist table tr#fv_wp_flowplayer_file_info { display: none; }
19
- #fv-flowplayer-playlist table .fv_wp_flowplayer_field_rtmp { visibility: hidden; }
20
- #fv-flowplayer-playlist table .fv_wp_flowplayer_field_rtmp_wrapper th { visibility: hidden; }
21
- #fv-flowplayer-playlist table .hint { display: none; }
22
- /*#fv-flowplayer-playlist table .button { display: none; }*/
23
- #fv-flowplayer-playlist table:first-child tr.video-size { display: table-row; }
24
- #fv-flowplayer-playlist table:first-child .hint { display: inline; }
25
- #fv-flowplayer-playlist table:first-child tr#fv_wp_flowplayer_add_format_wrapper { display: table-row; }
26
- #fv-flowplayer-playlist table:first-child tr#fv_wp_flowplayer_file_info { display: none; }
27
- #fv-flowplayer-playlist table:first-child .fv_wp_flowplayer_field_rtmp { visibility: visible; }
28
- #fv-flowplayer-playlist table:first-child .fv_wp_flowplayer_field_rtmp_wrapper th { visibility: visible; }
29
- /*#fv-flowplayer-playlist table:first-child .button { display: inline-block; }*/
30
- /*#colorbox, #cboxOverlay, #cboxWrapper{ z-index: 100000; }*/
31
-
32
- #fv-player-shortcode-editor .fv-player-tab-video-files table .button { width: 22% }
33
- #fv-player-shortcode-editor .fv-player-tab-subtitles table .button { width: 26% }
34
- #fv-player-shortcode-editor .fv-player-tabs .submit-button-wrapper .button { width: auto; }
35
-
36
- #fv-player-shortcode-editor-editor{ top:0; }
37
- #fv-player-shortcode-editor-editor > table{ width:100%; }
38
- #fv-player-shortcode-editor td{ vertical-align: top; }
39
- .fv-player-tab table{ margin-bottom: 10px; }
40
- .fv-player-tabs-header .nav-tab-wrapper{ margin:0; }
41
- .fv_player_actions_end-toggle,.fv_player_interface_hide,.fv-player-playlist-item-title{ display:none; }
42
- #fv_player_boxTitle{ display:none!important; }
43
- #fv_player_boxLoadedContent{ margin-top:0; }
44
-
45
- .fv-player-shortcode-editor-left{ width:40%; }
46
- .fv-player-shortcode-editor-right{ width:60%; }
47
- #fv-player-shortcode-editor #fv_wp_flowplayer_field_player_name { width: 88% }
48
- .fv-player-tab{position:relative;}
49
- .fv-player-tabs #fv-player-list-thumb-toggle{ position:absolute;right:10px;text-align:right;top:9px; }
50
- #fv-player-list-thumb-toggle a{ text-decoration:none;margin-left:6px;color:#b4b9be; }
51
- #fv-player-list-thumb-toggle a.active{ color:#0073aa; }
52
- #fv-player-list-thumb-toggle a.disabled{ cursor:default; }
53
- .fv-player-playlist-item-title, .fv-player-playlist-item-title:hover{ margin:0;border:0;background:transparent; }
54
-
55
- /*Playlist view*/
56
- .is-playlist .fv-player-playlist-item-title{ display:block;padding:0 10px 12px; }
57
- .is-playlist .fv_player_field_insert-button{ display:none; }
58
- .is-playlist-active .playlist_edit{ display:none; }
59
-
60
- .is-playlist .hide-if-playlist{display:none;}
61
- .is-singular .hide-if-singular{display:none;}
62
- .is-playlist-active .hide-if-playlist-active{display:none;}
63
-
64
- .playlist_edit{ display:block; }
65
- .fv-player-tab-playlist tr:not(:hover) .fvp_item_remove{visibility: hidden;}
66
- .fv-player-tab-playlist tr:hover .fvp_item_remove{visibility: visible;color: #a00;}
67
- .fv-player-tab-playlist a{cursor:pointer;}
68
-
69
- .fv-player-tab-playlist .fv-player-playlist-item{ border-spacing: 0 2px; }
70
- .fv-player-tab-playlist tbody td{ padding:3px 5px;height:50px;cursor:pointer; }
71
- .fv-player-tab-playlist .fv-player-playlist-item tbody td:first-child{cursor:n-resize;}
72
-
73
- .fvp_item_video-side-by-side{display:inline-block;vertical-align:top;float: left;margin-right: 1%;}
74
- .fvp_item_video-filename {word-wrap: break-word;display: inline-block; max-width: 180px;}
75
- .hide-thumbnails .fvp_item_video-filename {max-width: 100%;}
76
- .fv-player-tab-playlist > table > thead > tr > th:nth-child(1),.fv-player-tab-playlist > table > tbody > tr > td:nth-child(1),
77
- .fv-player-tab-playlist > table > thead > tr > th:nth-child(2),.fv-player-tab-playlist > table > tbody > tr > td:nth-child(2){ width:300px; }
78
- .fv-player-tab-playlist > table > thead{ display:block; }
79
- .fv-player-tab-playlist.hide-thumbnails .fvp_item_video-thumbnail{ display:none; }
80
- .fv-player-tab-playlist > table > tbody{ display:block;overflow:auto;max-height:calc(100vh - 270px); }
81
- #fv-player-list-thumb-toggle > .active{ font-weight:bold; }
82
- #fv-player-list-thumb-toggle > a{ box-shadow:none; }
83
- #fv-player-shortcode-editor td > input[type="checkbox"]{margin-top:-4px}
84
-
85
- #fv-player-shortcode-editor-loading-spinner {background-image: url(../../../../wp-includes/images/wpspin-2x.gif); background-color: white; background-repeat: no-repeat; background-position: center; position:absolute; z-index: 2; height: 100%; width: 100%;}
86
- #fv-player-shortcode-editor-loading-spinner.loaded {background: white}
87
-
88
- /*Preview iframe*/
89
- #fv-player-shortcode-editor-preview{ width: 460px;position:relative; }
90
- #fv-player-shortcode-editor-preview div.fv-player-shortcode-editor-helper {display:none;}
91
- #fv-player-shortcode-editor-preview.preview-loading #fv-player-shortcode-editor-preview-spinner,
92
- #fv-player-shortcode-editor-preview.preview-no #fv-player-shortcode-editor-preview-no,
93
- #fv-player-shortcode-editor-preview.preview-new-tab #fv-player-shortcode-editor-preview-new-tab{display:block;}
94
- #fv-player-shortcode-editor-preview.preview-no #fv-player-shortcode-editor-preview-target,
95
- #fv-player-shortcode-editor-preview.preview-new-tab #fv-player-shortcode-editor-preview-target{display:none}
96
- #fv-player-shortcode-editor-preview.preview-new-tab #fv-player-shortcode-editor-preview-iframe-refresh{display:none!important}
97
- #fv-player-shortcode-editor-preview-spinner, .fv-player-shortcode-editor-small-spinner {background-image: url(../../../../wp-includes/images/wpspin-2x.gif); background-color: white; background-repeat: no-repeat; background-position: center}
98
- #fv-player-shortcode-editor-preview-spinner{position:absolute; z-index: 2; height: 200px; width: 100%;}
99
- .fv-player-shortcode-editor-small-spinner {z-index: 2; background-size: 20px; height: 20px; width: 20px; display: inline-block}
100
- .fvp_item_video-thumbnail img{max-width: 95px;max-height: 95px;}
101
- #fv-player-shortcode-editor-preview-new-tab, #fv-player-shortcode-editor-preview-no{background-image: url(../images/icon-256x256.png);width: 256px;height: 290px;background-repeat: no-repeat;line-height:512px;overflow:hidden;margin:0 auto;text-align: center;}
102
- #fv-player-shortcode-editor-preview-new-tab a {margin-top:256px;}
103
-
104
- #fv-player-shortcode-editor-preview div.notice { display: block }
105
-
106
- .first-item-only {
107
- display: none;
108
- }
109
- .fv-player-playlist-item[data-index="0"] .first-item-only {
110
- display: table-row;
111
- }
112
- .fv-player-playlist-item[data-index="0"] .first-item-only.fv_player_interface_hide {
113
- display: none;
114
- }
115
-
116
- .fv-player-tabs th { width: 21%; text-align: right; }
117
- .fv-player-tabs .fv-player-tab-playlist th { text-align: left; }
118
-
119
-
120
-
121
- /* moved in from main plugin css */
122
- .add_media span.wp-media-buttons-icon {
123
- background: url("img/media-button.png") no-repeat scroll left top;
124
- display: inline-block;
125
- height: 16px;
126
- margin: 0 2px;
127
- vertical-align: text-top;
128
- width: 16px;
129
- }
130
- #cboxWrapper a {
131
- text-decoration: none;
132
- }
133
- a #add-format, a #add-rtmp {
134
- background: #333;
135
- border-radius: 2px;
136
- color: #fff;
137
- display: inline-block;
138
- font-size: 16px;
139
- font-weight: normal;
140
- height: 18px;
141
- line-height: 1rem;
142
- margin: 0 5px 0 0;
143
- text-align: center;
144
- width: 18px;
145
- padding: 0;
146
- text-decoration: none;
147
- }
148
- #fv-wordpress-flowplayer-popup table {
149
- width: 100%;
150
- }
151
- #fv-wordpress-flowplayer-popup table th {
152
- text-align: right;
153
- width: 18%;
154
- padding: 4px 2px;
155
- }
156
- #fv-wordpress-flowplayer-popup table td {
157
- padding: 4px 2px;
158
- }
159
-
160
- #fv_player_copy_to_clipboard, #fv_player_import_data {width: 80%}
161
- #fv_player_copied_to_clipboard_message, #fv_player_imported_message {margin: 22px auto 0 auto; visibility: hidden; width: 20%; text-align: center}
162
-
163
- #fv-player-shortcode-editor-editor ::placeholder {
164
- opacity:.5;
165
- }
166
-
1
+ #fv_player_boxLoadedContent{ background-color:white; }
2
+ #fv-player-shortcode-editor { background-color: white; }
3
+ .fv-wp-flowplayer-notice { background-color: #FFFFE0; border-color: #E6DB55; margin: 5px 0 15px; padding: 0 0.6em; border-radius: 3px 3px 3px 3px; border-style: solid; border-width: 1px; }
4
+ .fv-wp-flowplayer-notice.fv-wp-flowplayer-note { background-color: #F8F8F8; border-color: #E0E0E0; }
5
+ .fv-wp-flowplayer-notice p { font-family: sans-serif; font-size: 12px; margin: 0.5em 0; padding: 2px; }
6
+ .fv_wp_flowplayer_playlist_remove { display: none; }
7
+ .fv-player-tabs-header { padding:6px 0 12px; }
8
+ #fv-flowplayer-playlist table { border-bottom: 1px #eee solid; }
9
+ #fv-player-shortcode-editor table input[type=text], #fv-flowplayer-playlist table input[type=text].with-button { width: 93%; }
10
+ #fv-player-shortcode-editor table input[type=text].half-field { width: 37%; }
11
+ #fv-player-shortcode-editor .fv-player-tab-video-files table input.with-button { width: 75%; }
12
+ #fv-player-shortcode-editor .fv-player-tab-subtitles table input.with-button { width: 70%; }
13
+ #fv-player-shortcode-editor table input.fv_wp_flowplayer_field_subtitles { width: 82%; }
14
+ #fv-player-shortcode-editor table input.fv_wp_flowplayer_field_subtitles.with-button { width: 59%; }
15
+ #fv-player-shortcode-editor table select.fv_wp_flowplayer_field_subtitles_lang { width: 10%;float:left; margin: 1px 2px; height: 27px }
16
+ #fv-flowplayer-playlist table tr.video-size { display: none; }
17
+ #fv-flowplayer-playlist table tr#fv_wp_flowplayer_add_format_wrapper { display: none; }
18
+ #fv-flowplayer-playlist table tr#fv_wp_flowplayer_file_info { display: none; }
19
+ #fv-flowplayer-playlist table .fv_wp_flowplayer_field_rtmp { visibility: hidden; }
20
+ #fv-flowplayer-playlist table .fv_wp_flowplayer_field_rtmp_wrapper th { visibility: hidden; }
21
+ #fv-flowplayer-playlist table .hint { display: none; }
22
+ /*#fv-flowplayer-playlist table .button { display: none; }*/
23
+ #fv-flowplayer-playlist table:first-child tr.video-size { display: table-row; }
24
+ #fv-flowplayer-playlist table:first-child .hint { display: inline; }
25
+ #fv-flowplayer-playlist table:first-child tr#fv_wp_flowplayer_add_format_wrapper { display: table-row; }
26
+ #fv-flowplayer-playlist table:first-child tr#fv_wp_flowplayer_file_info { display: none; }
27
+ #fv-flowplayer-playlist table:first-child .fv_wp_flowplayer_field_rtmp { visibility: visible; }
28
+ #fv-flowplayer-playlist table:first-child .fv_wp_flowplayer_field_rtmp_wrapper th { visibility: visible; }
29
+ /*#fv-flowplayer-playlist table:first-child .button { display: inline-block; }*/
30
+ /*#colorbox, #cboxOverlay, #cboxWrapper{ z-index: 100000; }*/
31
+
32
+ #fv-player-shortcode-editor .fv-player-tab-video-files table .button { width: 22% }
33
+ #fv-player-shortcode-editor .fv-player-tab-subtitles table .button { width: 26% }
34
+ #fv-player-shortcode-editor .fv-player-tabs .submit-button-wrapper .button { width: auto; }
35
+
36
+ #fv-player-shortcode-editor-editor{ top:0; }
37
+ #fv-player-shortcode-editor-editor > table{ width:100%; }
38
+ #fv-player-shortcode-editor td{ vertical-align: top; }
39
+ .fv-player-tab table{ margin-bottom: 10px; }
40
+ .fv-player-tabs-header .nav-tab-wrapper{ margin:0; }
41
+ .fv_player_actions_end-toggle,.fv_player_interface_hide,.fv-player-playlist-item-title{ display:none; }
42
+ #fv_player_boxTitle{ display:none!important; }
43
+ #fv_player_boxLoadedContent{ margin-top:0; }
44
+
45
+ .fv-player-shortcode-editor-left{ width:40%; }
46
+ .fv-player-shortcode-editor-right{ width:60%; }
47
+ #fv-player-shortcode-editor #fv_wp_flowplayer_field_player_name { width: 88% }
48
+ .fv-player-tab{position:relative;}
49
+ .fv-player-tabs #fv-player-list-thumb-toggle{ position:absolute;right:10px;text-align:right;top:9px; }
50
+ #fv-player-list-thumb-toggle a{ text-decoration:none;margin-left:6px;color:#b4b9be; }
51
+ #fv-player-list-thumb-toggle a.active{ color:#0073aa; }
52
+ #fv-player-list-thumb-toggle a.disabled{ cursor:default; }
53
+ .fv-player-playlist-item-title, .fv-player-playlist-item-title:hover{ margin:0;border:0;background:transparent; }
54
+
55
+ /*Playlist view*/
56
+ .is-playlist .fv-player-playlist-item-title{ display:block;padding:0 10px 12px; }
57
+ .is-playlist .fv_player_field_insert-button{ display:none; }
58
+ .is-playlist-active .playlist_edit{ display:none; }
59
+
60
+ .is-playlist .hide-if-playlist{display:none;}
61
+ .is-singular .hide-if-singular{display:none;}
62
+ .is-playlist-active .hide-if-playlist-active{display:none;}
63
+
64
+ .playlist_edit{ display:block; }
65
+ .fv-player-tab-playlist tr:not(:hover) .fvp_item_remove{visibility: hidden;}
66
+ .fv-player-tab-playlist tr:hover .fvp_item_remove{visibility: visible;color: #a00;}
67
+ .fv-player-tab-playlist a{cursor:pointer;}
68
+
69
+ .fv-player-tab-playlist .fv-player-playlist-item{ border-spacing: 0 2px; }
70
+ .fv-player-tab-playlist tbody td{ padding:3px 5px;height:50px;cursor:pointer; }
71
+ .fv-player-tab-playlist .fv-player-playlist-item tbody td:first-child{cursor:n-resize;}
72
+
73
+ .fvp_item_video-side-by-side{display:inline-block;vertical-align:top;float: left;margin-right: 1%;}
74
+ .fvp_item_video-filename {word-wrap: break-word;display: inline-block; max-width: 180px;}
75
+ .hide-thumbnails .fvp_item_video-filename {max-width: 100%;}
76
+ .fv-player-tab-playlist > table > thead > tr > th:nth-child(1),.fv-player-tab-playlist > table > tbody > tr > td:nth-child(1),
77
+ .fv-player-tab-playlist > table > thead > tr > th:nth-child(2),.fv-player-tab-playlist > table > tbody > tr > td:nth-child(2){ width:300px; }
78
+ .fv-player-tab-playlist > table > thead{ display:block; }
79
+ .fv-player-tab-playlist.hide-thumbnails .fvp_item_video-thumbnail{ display:none; }
80
+ .fv-player-tab-playlist > table > tbody{ display:block;overflow:auto;max-height:calc(100vh - 270px); }
81
+ #fv-player-list-thumb-toggle > .active{ font-weight:bold; }
82
+ #fv-player-list-thumb-toggle > a{ box-shadow:none; }
83
+ #fv-player-shortcode-editor td > input[type="checkbox"]{margin-top:-4px}
84
+
85
+ #fv-player-shortcode-editor-loading-spinner {background-image: url(../../../../wp-includes/images/wpspin-2x.gif); background-color: white; background-repeat: no-repeat; background-position: center; position:absolute; z-index: 2; height: 100%; width: 100%;}
86
+ #fv-player-shortcode-editor-loading-spinner.loaded {background: white}
87
+
88
+ /*Preview iframe*/
89
+ #fv-player-shortcode-editor-preview{ width: 460px;position:relative; }
90
+ #fv-player-shortcode-editor-preview div.fv-player-shortcode-editor-helper {display:none;}
91
+ #fv-player-shortcode-editor-preview.preview-loading #fv-player-shortcode-editor-preview-spinner,
92
+ #fv-player-shortcode-editor-preview.preview-no #fv-player-shortcode-editor-preview-no,
93
+ #fv-player-shortcode-editor-preview.preview-new-tab #fv-player-shortcode-editor-preview-new-tab{display:block;}
94
+ #fv-player-shortcode-editor-preview.preview-no #fv-player-shortcode-editor-preview-target,
95
+ #fv-player-shortcode-editor-preview.preview-new-tab #fv-player-shortcode-editor-preview-target{display:none}
96
+ #fv-player-shortcode-editor-preview.preview-new-tab #fv-player-shortcode-editor-preview-iframe-refresh{display:none!important}
97
+ #fv-player-shortcode-editor-preview-spinner, .fv-player-shortcode-editor-small-spinner {background-image: url(../../../../wp-includes/images/wpspin-2x.gif); background-color: white; background-repeat: no-repeat; background-position: center}
98
+ #fv-player-shortcode-editor-preview-spinner{position:absolute; z-index: 2; height: 200px; width: 100%;}
99
+ .fv-player-shortcode-editor-small-spinner {z-index: 2; background-size: 20px; height: 20px; width: 20px; display: inline-block}
100
+ .fvp_item_video-thumbnail img{max-width: 95px;max-height: 95px;}
101
+ #fv-player-shortcode-editor-preview-new-tab, #fv-player-shortcode-editor-preview-no{background-image: url(../images/icon-256x256.png);width: 256px;height: 290px;background-repeat: no-repeat;line-height:512px;overflow:hidden;margin:0 auto;text-align: center;}
102
+ #fv-player-shortcode-editor-preview-new-tab a {margin-top:256px;}
103
+
104
+ #fv-player-shortcode-editor-preview div.notice { display: block }
105
+
106
+ .first-item-only {
107
+ display: none;
108
+ }
109
+ .fv-player-playlist-item[data-index="0"] .first-item-only {
110
+ display: table-row;
111
+ }
112
+ .fv-player-playlist-item[data-index="0"] .first-item-only.fv_player_interface_hide {
113
+ display: none;
114
+ }
115
+
116
+ .fv-player-tabs th { width: 21%; text-align: right; }
117
+ .fv-player-tabs .fv-player-tab-playlist th { text-align: left; }
118
+
119
+
120
+
121
+ /* moved in from main plugin css */
122
+ .add_media span.wp-media-buttons-icon {
123
+ background: url("img/media-button.png") no-repeat scroll left top;
124
+ display: inline-block;
125
+ height: 16px;
126
+ margin: 0 2px;
127
+ vertical-align: text-top;
128
+ width: 16px;
129
+ }
130
+ #cboxWrapper a {
131
+ text-decoration: none;
132
+ }
133
+ a #add-format, a #add-rtmp {
134
+ background: #333;
135
+ border-radius: 2px;
136
+ color: #fff;
137
+ display: inline-block;
138
+ font-size: 16px;
139
+ font-weight: normal;
140
+ height: 18px;
141
+ line-height: 1rem;
142
+ margin: 0 5px 0 0;
143
+ text-align: center;
144
+ width: 18px;
145
+ padding: 0;
146
+ text-decoration: none;
147
+ }
148
+ #fv-wordpress-flowplayer-popup table {
149
+ width: 100%;
150
+ }
151
+ #fv-wordpress-flowplayer-popup table th {
152
+ text-align: right;
153
+ width: 18%;
154
+ padding: 4px 2px;
155
+ }
156
+ #fv-wordpress-flowplayer-popup table td {
157
+ padding: 4px 2px;
158
+ }
159
+
160
+ #fv_player_copy_to_clipboard, #fv_player_import_data {width: 80%}
161
+ #fv_player_copied_to_clipboard_message, #fv_player_imported_message {margin: 22px auto 0 auto; visibility: hidden; width: 20%; text-align: center}
162
+
163
+ #fv-player-shortcode-editor-editor ::placeholder {
164
+ opacity:.5;
165
+ }
166
+
flowplayer.php CHANGED
@@ -3,7 +3,7 @@
3
Plugin Name: FV Player
4
Plugin URI: http://foliovision.com/wordpress/plugins/fv-wordpress-flowplayer
5
Description: Formerly FV WordPress Flowplayer. Supports MP4, HLS, MPEG-DASH, WebM and OGV. Advanced features such as overlay ads or popups. Uses Flowplayer 7.2.7.
6
- Version: 7.3.6.727
7
Author URI: http://foliovision.com/
8
License: GPL-3.0
9
License URI: http://www.gnu.org/licenses/gpl-3.0.txt
@@ -27,7 +27,7 @@ License URI: http://www.gnu.org/licenses/gpl-3.0.txt
27
*/
28
29
global $fv_wp_flowplayer_ver;
30
- $fv_wp_flowplayer_ver = '7.3.6.727';
31
$fv_wp_flowplayer_core_ver = '7.2.7.1';
32
33
include_once( dirname( __FILE__ ) . '/includes/extra-functions.php' );
3
Plugin Name: FV Player
4
Plugin URI: http://foliovision.com/wordpress/plugins/fv-wordpress-flowplayer
5
Description: Formerly FV WordPress Flowplayer. Supports MP4, HLS, MPEG-DASH, WebM and OGV. Advanced features such as overlay ads or popups. Uses Flowplayer 7.2.7.
6
+ Version: 7.3.7.727
7
Author URI: http://foliovision.com/
8
License: GPL-3.0
9
License URI: http://www.gnu.org/licenses/gpl-3.0.txt
27
*/
28
29
global $fv_wp_flowplayer_ver;
30
+ $fv_wp_flowplayer_ver = '7.3.7.727.1';
31
$fv_wp_flowplayer_core_ver = '7.2.7.1';
32
33
include_once( dirname( __FILE__ ) . '/includes/extra-functions.php' );
flowplayer/embed.min.js CHANGED
File without changes
flowplayer/flowplayer.swf CHANGED
File without changes
flowplayer/flowplayerhls.swf CHANGED
File without changes
flowplayer/fv-flowplayer.min.js CHANGED
@@ -593,7 +593,9 @@ function fv_player_preload() {
593
if( property == 'max-height' ) playlist.css('height','auto');
594
}
595
check_size_and_all();
596
- jQuery(window).on('resize tabsactivate', function() { check_size_and_all() } );
597
}
598
599
function vertical_playlist_height(args) {
593
if( property == 'max-height' ) playlist.css('height','auto');
594
}
595
check_size_and_all();
596
+ jQuery(window).on('resize tabsactivate', function() {
597
+ setTimeout( check_size_and_all, 0 );
598
+ } );
599
}
600
601
function vertical_playlist_height(args) {
js/s3-browser.js CHANGED
@@ -1,4 +1,7 @@
1
jQuery( function($) {
2
function fv_flowplayer_media_browser_add_tab(tabId, tabText, tabOnClickCallback) {
3
if (!jQuery('#' + tabId).length) {
4
// add Vimeo browser tab
@@ -141,14 +144,14 @@ fv_flowplayer_s3_browse = function(data, ajax_search_callback) {
141
// This event listener monitors changes on the URL. We use it to
142
// capture back/forward navigation in the browser.
143
144
- jQuery(window).on('hashchange', function(){
145
146
- goto(window.location.hash);
147
148
// We are triggering the event. This will execute
149
// this function on page load, so that we show the correct folder:
150
151
- }).trigger('hashchange');
152
153
154
// Hiding and showing the search box
@@ -185,14 +188,16 @@ fv_flowplayer_s3_browse = function(data, ajax_search_callback) {
185
filemanager.addClass('searching');
186
187
// Update the hash on every key stroke
188
- window.location.hash = 'search=' + value.trim();
189
190
}
191
192
else {
193
194
filemanager.removeClass('searching');
195
- window.location.hash = encodeURIComponent(currentPath);
196
197
}
198
@@ -221,7 +226,9 @@ fv_flowplayer_s3_browse = function(data, ajax_search_callback) {
221
222
if(!search.val().trim().length) {
223
224
- window.location.hash = encodeURIComponent(currentPath);
225
search.hide();
226
search.parent().find('span').show();
227
@@ -251,7 +258,9 @@ fv_flowplayer_s3_browse = function(data, ajax_search_callback) {
251
breadcrumbsUrls.push(nextDir);
252
}
253
254
- window.location.hash = encodeURIComponent(nextDir);
255
currentPath = nextDir;
256
});
257
@@ -266,7 +275,8 @@ fv_flowplayer_s3_browse = function(data, ajax_search_callback) {
266
267
breadcrumbsUrls.length = Number(index);
268
269
- window.location.hash = encodeURIComponent(nextDir);
270
271
});
272
@@ -275,7 +285,7 @@ fv_flowplayer_s3_browse = function(data, ajax_search_callback) {
275
276
function goto(hash) {
277
278
- hash = decodeURIComponent(hash).slice(1).split('=');
279
280
if (hash.length) {
281
var rendered = '';
@@ -487,7 +497,8 @@ fv_flowplayer_s3_browse = function(data, ajax_search_callback) {
487
488
$url_input
489
.val($this.attr('href'))
490
- .removeClass('fv_flowplayer_target' );
491
492
if( splash && $url_input.attr('id').match(/^fv_wp_flowplayer_field_src/) ) {
493
var splash_input = $url_input.parents('table').find('#fv_wp_flowplayer_field_splash');
1
jQuery( function($) {
2
+
3
+ window.fv_player_browser = '';
4
+
5
function fv_flowplayer_media_browser_add_tab(tabId, tabText, tabOnClickCallback) {
6
if (!jQuery('#' + tabId).length) {
7
// add Vimeo browser tab
144
// This event listener monitors changes on the URL. We use it to
145
// capture back/forward navigation in the browser.
146
147
+ jQuery(window).on('fv-player-browser-hashchange', function(){
148
149
+ goto(window.fv_player_browser);
150
151
// We are triggering the event. This will execute
152
// this function on page load, so that we show the correct folder:
153
154
+ }).trigger('fv-player-browser-hashchange');
155
156
157
// Hiding and showing the search box
188
filemanager.addClass('searching');
189
190
// Update the hash on every key stroke
191
+ window.fv_player_browser = 'search=' + value.trim();
192
+ jQuery(window).trigger('fv-player-browser-hashchange');
193
194
}
195
196
else {
197
198
filemanager.removeClass('searching');
199
+ window.fv_player_browser = encodeURIComponent(currentPath);
200
+ jQuery(window).trigger('fv-player-browser-hashchange');
201
202
}
203
226
227
if(!search.val().trim().length) {
228
229
+ window.fv_player_browser = encodeURIComponent(currentPath);
230
+ jQuery(window).trigger('fv-player-browser-hashchange');
231
+
232
search.hide();
233
search.parent().find('span').show();
234
258
breadcrumbsUrls.push(nextDir);
259
}
260
261
+ window.fv_player_browser = encodeURIComponent(nextDir);
262
+ jQuery(window).trigger('fv-player-browser-hashchange');
263
+
264
currentPath = nextDir;
265
});
266
275
276
breadcrumbsUrls.length = Number(index);
277
278
+ window.fv_player_browser = encodeURIComponent(nextDir);
279
+ jQuery(window).trigger('fv-player-browser-hashchange');
280
281
});
282
285
286
function goto(hash) {
287
288
+ hash = decodeURIComponent(hash).split('=');
289
290
if (hash.length) {
291
var rendered = '';
497
498
$url_input
499
.val($this.attr('href'))
500
+ .removeClass('fv_flowplayer_target' )
501
+ .trigger('keyup'); // this changes the HLS key field visibility in FV Player Pro
502
503
if( splash && $url_input.attr('id').match(/^fv_wp_flowplayer_field_src/) ) {
504
var splash_input = $url_input.parents('table').find('#fv_wp_flowplayer_field_splash');
js/shortcode-editor.js CHANGED
File without changes
models/checker.php CHANGED
File without changes
models/custom-videos.php CHANGED
@@ -2,8 +2,6 @@
2
3
class FV_Player_Custom_Videos {
4
5
- var $did_form = false;
6
-
7
var $id;
8
9
var $instance_id;
@@ -29,17 +27,6 @@ class FV_Player_Custom_Videos {
29
30
public function get_form( $args = array() ) {
31
32
- global $FV_Player_Custom_Videos_form_instances;
33
- if( isset($FV_Player_Custom_Videos_form_instances[$this->meta]) ) {
34
- $number = rand();
35
- echo "<span id='fv-player-custom-videos-form-".$number."'></span>";
36
- echo "<script>jQuery('span#fv-player-custom-videos-form-".$number."').parents('.postbox').remove();</script>";
37
- return false;
38
- }
39
- $FV_Player_Custom_Videos_form_instances[$this->meta] = true;
40
-
41
- $this->did_form = true;
42
-
43
$args = wp_parse_args( $args, array( 'wrapper' => 'div', 'edit' => true, 'limit' => 1000, 'no_form' => false ) );
44
45
$html = '';
@@ -91,9 +78,13 @@ class FV_Player_Custom_Videos {
91
}
92
93
public function get_html_part( $video, $edit = false ) {
94
95
// exp: what matters here is .fv-player-editor-field and .fv-player-editor-button wrapped in .fv-player-editor-wrapper and .fv-player-editor-preview
96
if( $edit ) {
97
$html = "<div class='fv-player-editor-wrapper' data-key='fv-player-editor-field-".$this->meta."'>
98
<div class='inside inside-child'>
99
<div class='fv-player-editor-preview'>".($video ? do_shortcode($video) : '')."</div>
@@ -101,7 +92,7 @@ class FV_Player_Custom_Videos {
101
<div class='edit-video' ".(!$video ? 'style="display:none"' : '').">
102
<button class='button fv-player-editor-button'>Edit Video</button>
103
<button class='button fv-player-editor-remove'>Remove Video</button>
104
- <button class='button fv-player-editor-more' style='display:none'>Add Another Video</button>
105
</div>
106
107
<div class='add-video' ".($video ? 'style="display:none"' : '').">
@@ -212,15 +203,17 @@ class FV_Player_Custom_Videos_Master {
212
function add_meta_boxes() {
213
global $post;
214
if( !empty($this->aMetaBoxes[$post->post_type]) ) {
215
- foreach( $this->aMetaBoxes[$post->post_type] AS $meta_key => $name ) {
216
- $objVideos = new FV_Player_Custom_Videos( array('id' => $post->ID, 'meta' => $meta_key, 'type' => 'post' ) );
217
- add_meta_box( 'fv_player_custom_videos-field_'.$meta_key,
218
- $name,
219
array( $this, 'meta_box' ),
220
null,
221
'normal',
222
- 'high',
223
- $objVideos );
224
}
225
}
226
@@ -233,13 +226,15 @@ class FV_Player_Custom_Videos_Master {
233
foreach( $aMeta AS $key => $aMetas ) {
234
$objVideos = new FV_Player_Custom_Videos( array('id' => $post->ID, 'meta' => $key, 'type' => 'post' ) );
235
if( $objVideos->have_videos() ) {
236
- add_meta_box( 'fv_player_custom_videos-field_'.$key,
237
ucfirst(str_replace( array('_','-'),' ',$key)),
238
array( $this, 'meta_box' ),
239
null,
240
'normal',
241
- 'high',
242
- $objVideos );
243
}
244
245
}
@@ -293,17 +288,14 @@ class FV_Player_Custom_Videos_Master {
293
294
function meta_box( $aPosts, $args ) {
295
global $FV_Player_Custom_Videos_form_instances;
296
- $objVideos = $args['args'];
297
- unset($FV_Player_Custom_Videos_form_instances[$objVideos->meta]);
298
echo $objVideos->get_form();
299
}
300
301
- function register_metabox( $name, $meta_key, $post_type, $display ) {
302
- if( !isset($this->aMetaBoxes[$post_type]) ) $this->aMetaBoxes[$post_type] = array();
303
- if( !isset($this->aMetaBoxesDisplay[$post_type]) ) $this->aMetaBoxesDisplay[$post_type] = array();
304
305
- $this->aMetaBoxes[$post_type][$meta_key] = $name;
306
- $this->aMetaBoxesDisplay[$post_type][$meta_key] = $display;
307
}
308
309
@@ -361,7 +353,7 @@ class FV_Player_Custom_Videos_Master {
361
$aMeta = get_post_custom($post->ID);
362
if( $aMeta ) {
363
foreach( $aMeta AS $key => $aMetas ) {
364
- if( !empty($this->aMetaBoxesDisplay[$post->post_type][$key]) && $this->aMetaBoxesDisplay[$post->post_type][$key] ) {
365
$objVideos = new FV_Player_Custom_Videos( array('id' => $post->ID, 'meta' => $key, 'type' => 'post' ) );
366
if( $objVideos->have_videos() ) {
367
$content .= $objVideos->get_html();
@@ -442,9 +434,20 @@ $FV_Player_Custom_Videos_Master = new FV_Player_Custom_Videos_Master;
442
443
class FV_Player_MetaBox {
444
445
- function __construct( $name, $meta_key, $post_type, $display = false ) {
446
global $FV_Player_Custom_Videos_Master;
447
- $FV_Player_Custom_Videos_Master->register_metabox( $name, $meta_key, $post_type, $display );
448
}
449
450
}
2
3
class FV_Player_Custom_Videos {
4
5
var $id;
6
7
var $instance_id;
27
28
public function get_form( $args = array() ) {
29
30
$args = wp_parse_args( $args, array( 'wrapper' => 'div', 'edit' => true, 'limit' => 1000, 'no_form' => false ) );
31
32
$html = '';
78
}
79
80
public function get_html_part( $video, $edit = false ) {
81
+ global $FV_Player_Custom_Videos_Master, $post;
82
+ $args = !empty($FV_Player_Custom_Videos_Master->aMetaBoxes[$post->post_type]) ? $FV_Player_Custom_Videos_Master->aMetaBoxes[$post->post_type][$this->meta] : array( 'multiple' => true );
83
84
// exp: what matters here is .fv-player-editor-field and .fv-player-editor-button wrapped in .fv-player-editor-wrapper and .fv-player-editor-preview
85
if( $edit ) {
86
+ $add_another = $args['multiple'] ? "<button class='button fv-player-editor-more' style='display:none'>Add Another Video</button>" : false;
87
+
88
$html = "<div class='fv-player-editor-wrapper' data-key='fv-player-editor-field-".$this->meta."'>
89
<div class='inside inside-child'>
90
<div class='fv-player-editor-preview'>".($video ? do_shortcode($video) : '')."</div>
92
<div class='edit-video' ".(!$video ? 'style="display:none"' : '').">
93
<button class='button fv-player-editor-button'>Edit Video</button>
94
<button class='button fv-player-editor-remove'>Remove Video</button>
95
+ $add_another
96
</div>
97
98
<div class='add-video' ".($video ? 'style="display:none"' : '').">
203
function add_meta_boxes() {
204
global $post;
205
if( !empty($this->aMetaBoxes[$post->post_type]) ) {
206
+ foreach( $this->aMetaBoxes[$post->post_type] AS $meta_key => $args ) {
207
+ global $FV_Player_Custom_Videos_form_instances;
208
+ $id = 'fv_player_custom_videos-field_'.$meta_key;
209
+ $FV_Player_Custom_Videos_form_instances[$id] = new FV_Player_Custom_Videos( array('id' => $post->ID, 'meta' => $args['meta_key'], 'type' => 'post' ) );
210
+ add_meta_box( $id,
211
+ $args['name'],
212
array( $this, 'meta_box' ),
213
null,
214
'normal',
215
+ 'high'
216
+ );
217
}
218
}
219
226
foreach( $aMeta AS $key => $aMetas ) {
227
$objVideos = new FV_Player_Custom_Videos( array('id' => $post->ID, 'meta' => $key, 'type' => 'post' ) );
228
if( $objVideos->have_videos() ) {
229
+ global $FV_Player_Custom_Videos_form_instances;
230
+ $id = 'fv_player_custom_videos-field_'.$key;
231
+ $FV_Player_Custom_Videos_form_instances[$id] = $objVideos;
232
+ add_meta_box( $id,
233
ucfirst(str_replace( array('_','-'),' ',$key)),
234
array( $this, 'meta_box' ),
235
null,
236
'normal',
237
+ 'high' );
238
}
239
240
}
288
289
function meta_box( $aPosts, $args ) {
290
global $FV_Player_Custom_Videos_form_instances;
291
+ $objVideos = $FV_Player_Custom_Videos_form_instances[$args['id']];
292
echo $objVideos->get_form();
293
}
294
295
+ function register_metabox( $args ) {
296
+ if( !isset($this->aMetaBoxes[$args['post_type']]) ) $this->aMetaBoxes[$args['post_type']] = array();
297
298
+ $this->aMetaBoxes[$args['post_type']][$args['meta_key']] = $args;
299
}
300
301
353
$aMeta = get_post_custom($post->ID);
354
if( $aMeta ) {
355
foreach( $aMeta AS $key => $aMetas ) {
356
+ if( !empty($this->aMetaBoxes[$post->post_type][$key]) && $this->aMetaBoxes[$post->post_type][$key]['display'] ) {
357
$objVideos = new FV_Player_Custom_Videos( array('id' => $post->ID, 'meta' => $key, 'type' => 'post' ) );
358
if( $objVideos->have_videos() ) {
359
$content .= $objVideos->get_html();
434
435
class FV_Player_MetaBox {
436
437
+ function __construct( $args, $meta_key = false, $post_type = false, $display = false ) {
438
+ if( is_string($args) ) {
439
+ $args = array(
440
+ 'name' => $args,
441
+ 'meta_key' => $meta_key,
442
+ 'post_type' => $post_type,
443
+ 'display' => $display
444
+ );
445
+ }
446
+
447
+ $args = wp_parse_args( $args, array( 'display' => false, 'multiple' => true ) );
448
+
449
global $FV_Player_Custom_Videos_Master;
450
+ $FV_Player_Custom_Videos_Master->register_metabox($args);
451
}
452
453
}
models/db-video.php CHANGED
@@ -84,7 +84,7 @@ class FV_Player_Db_Video {
84
*/
85
public function getDuration() {
86
$sDuration = false;
87
- if( $tDuration = $this->getMetaValue('duration',true) ) {
88
if( $tDuration < 3600 ) {
89
$sDuration = gmdate( "i:s", $tDuration );
90
} else {
@@ -294,7 +294,7 @@ CREATE TABLE " . self::$db_table_name . " (
294
$limit = ' LIMIT '.intval($options['db_options']['offset']).', '.intval($options['db_options']['per_page']);
295
}
296
297
- $video_data = $wpdb->get_results('SELECT '.$select.' FROM '.self::$db_table_name.$order.$limit);
298
299
if( !$video_data && count($id) != count($query_ids) ) { // if no video data has returned, but we have the rest of videos cached already
300
$all_cached = true;
84
*/
85
public function getDuration() {
86
$sDuration = false;
87
+ if( $tDuration = intval($this->getMetaValue('duration',true)) ) {
88
if( $tDuration < 3600 ) {
89
$sDuration = gmdate( "i:s", $tDuration );
90
} else {
294
$limit = ' LIMIT '.intval($options['db_options']['offset']).', '.intval($options['db_options']['per_page']);
295
}
296
297
+ $video_data = $wpdb->get_results('SELECT '.$select.' FROM '.self::$db_table_name.$where.$order.$limit);
298
299
if( !$video_data && count($id) != count($query_ids) ) { // if no video data has returned, but we have the rest of videos cached already
300
$all_cached = true;
models/db.php CHANGED
@@ -102,13 +102,13 @@ class FV_Player_Db {
102
if( is_numeric($aItem['sources'][0]['src']) ) {
103
$new = array( 'sources' => array() );
104
if( $src = $vid_obj->getSrc() ) {
105
- $new['sources'][] = array( 'src' => $src, 'type' => $fv_fp->get_mime_type($src) );
106
}
107
if( $src1 = $vid_obj->getSrc1() ) {
108
- $new['sources'][] = array( 'src' => $src1, 'type' => $fv_fp->get_mime_type($src1) );
109
}
110
if( $src2 = $vid_obj->getSrc2() ) {
111
- $new['sources'][] = array( 'src' => $src2, 'type' => $fv_fp->get_mime_type($src2));
112
}
113
if( $rtmp = $vid_obj->getRtmp() ) {
114
$new['rtmp'] = $rtmp;
102
if( is_numeric($aItem['sources'][0]['src']) ) {
103
$new = array( 'sources' => array() );
104
if( $src = $vid_obj->getSrc() ) {
105
+ $new['sources'][] = array( 'src' => apply_filters('fv_flowplayer_video_src',$src,array()), 'type' => $fv_fp->get_mime_type($src) );
106
}
107
if( $src1 = $vid_obj->getSrc1() ) {
108
+ $new['sources'][] = array( 'src' => apply_filters('fv_flowplayer_video_src',$src1,array()), 'type' => $fv_fp->get_mime_type($src1) );
109
}
110
if( $src2 = $vid_obj->getSrc2() ) {
111
+ $new['sources'][] = array( 'src' => apply_filters('fv_flowplayer_video_src',$src2,array()), 'type' => $fv_fp->get_mime_type($src2));
112
}
113
if( $rtmp = $vid_obj->getRtmp() ) {
114
$new['rtmp'] = $rtmp;
models/flowplayer-frontend.php CHANGED
File without changes
models/flowplayer.php CHANGED
File without changes
models/list-table.php CHANGED
@@ -29,6 +29,8 @@ class FV_Player_List_Table_View {
29
if( isset($_GET['page']) && $_GET['page'] == 'fv_player' ) {
30
global $fv_wp_flowplayer_ver;
31
wp_enqueue_style('fv-player-list-view', flowplayer::get_plugin_url().'/css/list-view.css',array(), $fv_wp_flowplayer_ver );
32
}
33
?>
34
<style>#adminmenu #toplevel_page_fv_player .wp-menu-image img {width:28px;height:25px;padding-top:4px}</style>
29
if( isset($_GET['page']) && $_GET['page'] == 'fv_player' ) {
30
global $fv_wp_flowplayer_ver;
31
wp_enqueue_style('fv-player-list-view', flowplayer::get_plugin_url().'/css/list-view.css',array(), $fv_wp_flowplayer_ver );
32
+
33
+ wp_enqueue_media();
34
}
35
?>
36
<style>#adminmenu #toplevel_page_fv_player .wp-menu-image img {width:28px;height:25px;padding-top:4px}</style>
models/media-browser-s3.php CHANGED
@@ -4,6 +4,8 @@ class FV_Player_Media_Browser_S3 extends FV_Player_Media_Browser {
4
5
function __construct( $ajax_action_name ) {
6
add_action( 'edit_form_after_editor', array($this, 'init'), 1 );
7
parent::__construct( $ajax_action_name );
8
}
9
@@ -13,6 +15,10 @@ class FV_Player_Media_Browser_S3 extends FV_Player_Media_Browser {
13
wp_enqueue_script( 'flowplayer-aws-s3', flowplayer::get_plugin_url().'/js/s3-browser.js', array(), $fv_wp_flowplayer_ver, true );
14
}
15
}
16
17
function fv_wp_flowplayer_include_aws_sdk() {
18
if ( ! class_exists( 'Aws\S3\S3Client' ) ) {
4
5
function __construct( $ajax_action_name ) {
6
add_action( 'edit_form_after_editor', array($this, 'init'), 1 );
7
+ add_action( 'enqueue_block_editor_assets', array($this, 'init_for_gutenberg') );
8
+ add_action( 'admin_print_footer_scripts', array($this, 'init'), 1 );
9
parent::__construct( $ajax_action_name );
10
}
11
15
wp_enqueue_script( 'flowplayer-aws-s3', flowplayer::get_plugin_url().'/js/s3-browser.js', array(), $fv_wp_flowplayer_ver, true );
16
}
17
}
18
+
19
+ function init_for_gutenberg() {
20
+ add_action( 'admin_footer', array($this, 'init'), 1 );
21
+ }
22
23
function fv_wp_flowplayer_include_aws_sdk() {
24
if ( ! class_exists( 'Aws\S3\S3Client' ) ) {
readme.txt CHANGED
@@ -357,7 +357,15 @@ Thank you for being part of the HMTL 5 mobile video revolution!
357
358
== Changelog ==
359
360
- = 7.3.6.727 - 2017/01/08 =
361
362
* Caption field - renaming to Title
363
* Database - enabling background processing for videos in DB
@@ -366,7 +374,7 @@ Thank you for being part of the HMTL 5 mobile video revolution!
366
* Sharing - removing Google+ as it's deprecated
367
* Bugfix - PHP 7.2 compatiblity
368
369
- = 7.3.4.727 - 2017/12/14 =
370
371
* FV Player top level wp-admin menu item icon
372
* WordPress 5 - Gutenberg editor support
@@ -374,14 +382,14 @@ Thank you for being part of the HMTL 5 mobile video revolution!
374
* Database - making it work with XML sitemap
375
* Handle WordPress shortcodes - improved to work with [playlist] as well
376
377
- = 7.3.3.727 - 2017/12/05 =
378
379
* Compatiblity - improving old Samsung phone detection for warning messages
380
* Database - PHP 5.2 compatibility fixes
381
* Database - schema changes for better compatibility (maximum row size error)
382
* MPEG-DASH - upgrading Dash.js to 2.8.0
383
384
- = 7.3.1.727 - 2017/11/16 =
385
386
* Fix for PHP warning in wp-admin when no database table is present yet
387
357
358
== Changelog ==
359
360
+ = 7.3.7.727 - 2019/01/24 =
361
+
362
+ * Database - performance fix
363
+ * Bugfix - fullscreen mode corners when using the YouTuby skin
364
+ * Bugfix - FV Player Meta Box (Custom Videos) fixes
365
+ * Bugfix - WP Media Library not loading for FV Player screen
366
+ * Bugfix - S3 Browser not loading FV Player screen and Gutenberg (block editor)
367
+
368
+ = 7.3.6.727 - 2019/01/08 =
369
370
* Caption field - renaming to Title
371
* Database - enabling background processing for videos in DB
374
* Sharing - removing Google+ as it's deprecated
375
* Bugfix - PHP 7.2 compatiblity
376
377
+ = 7.3.4.727 - 2018/12/14 =
378
379
* FV Player top level wp-admin menu item icon
380
* WordPress 5 - Gutenberg editor support
382
* Database - making it work with XML sitemap
383
* Handle WordPress shortcodes - improved to work with [playlist] as well
384
385
+ = 7.3.3.727 - 2018/12/05 =
386
387
* Compatiblity - improving old Samsung phone detection for warning messages
388
* Database - PHP 5.2 compatibility fixes
389
* Database - schema changes for better compatibility (maximum row size error)
390
* MPEG-DASH - upgrading Dash.js to 2.8.0
391
392
+ = 7.3.1.727 - 2018/11/16 =
393
394
* Fix for PHP warning in wp-admin when no database table is present yet
395
test/integration/backend/profileVideosTest.php DELETED
@@ -1,47 +0,0 @@
1
- <?php
2
-
3
- require_once( dirname(__FILE__).'/../fv-player-unittest-case.php');
4
-
5
- /**
6
- * Tests WordPress integration of playlists without any advertisements present
7
- * in the HTML markup.
8
- */
9
- final class FV_Player_ProfileVideosTestCase extends FV_Player_UnitTestCase {
10
-
11
- public function testProfileScreen() {
12
- global $fv_fp;
13
- $fv_fp->conf['profile_videos_enable_bio'] = true;
14
-
15
- // add new user and create last saved position metadata for this new user
16
- $this->userID = $this->factory->user->create(array(
17
- 'role' => 'admin'
18
- ));
19
-
20
- add_user_meta($this->userID, '_fv_player_user_video', '[fvplayer src="https://vimeo.com/255317467" playlist="https://vimeo.com/192934117" caption=";Talking about FV Player"]');
21
- add_user_meta($this->userID, '_fv_player_user_video', '[fvplayer src="https://vimeo.com/255370388"]');
22
- add_user_meta($this->userID, '_fv_player_user_video', '[fvplayer src="https://www.youtube.com/watch?v=6ZfuNTqbHE8"]]');
23
-
24
- $profileuser = get_user_to_edit($this->userID);
25
-
26
- ob_start();
27
- apply_filters( 'show_password_fields', true, $profileuser );
28
- $output = ob_get_clean();
29
-
30
- $one = $this->fix_newlines(file_get_contents(dirname(__FILE__).'/testProfileScreen.html')); // this contains user ID of '4'
31
- $two = explode("\n",$this->fix_newlines($output));
32
- foreach( explode("\n",$one) as $k => $v ) {
33
-
34
- /*if( $v != $two[$k]) {
35
- for($i=0;$i<strlen($two[$k]);$i++) {
36
- var_dump( $two[$k][$i].' '.ord($two[$k][$i]) );
37
- }
38
- }*/
39
-
40
- //$this->assertEquals( $v, $two[$k] );
41
- }
42
-
43
- $this->assertEquals( $this->fix_newlines(file_get_contents(dirname(__FILE__).'/testProfileScreen.html')), $this->fix_newlines($output) );
44
-
45
- }
46
-
47
- }
test/integration/backend/s3BrowserAjaxTest.php DELETED
@@ -1,61 +0,0 @@
1
- <?php
2
-
3
- require_once( dirname(__FILE__).'/../fv-player-ajax-unittest-case.php');
4
-
5
- /**
6
- * Tests WordPress integration of playlists without any advertisements present
7
- * in the HTML markup.
8
- */
9
- final class FV_Player_S3BrowserAjaxTestCase extends FV_Player_Ajax_UnitTestCase {
10
-
11
- // we need to make sure FV Player loads as if it's wp-admin
12
- public static function wpSetUpBeforeClass() {
13
- global $fv_fp;
14
-
15
- $_POST = array (
16
- 'amazon_bucket' => array(FV_PLAYER_AMAZON_BUCKET),
17
- 's3_browser' => 1,
18
- 'fv-wp-flowplayer-submit' => 'Save All Changes'
19
- );
20
-
21
- set_current_screen( 'edit-post' );
22
- // without this included, fv_wp_flowplayer_delete_extensions_transients() would not be found
23
- include_once "../../../fv-wordpress-flowplayer/controller/backend.php";
24
- parent::wpSetUpBeforeClass();
25
-
26
- $fv_fp->_set_conf();
27
- }
28
-
29
- public function setUp() {
30
- parent::setUp();
31
- }
32
-
33
- public function testNoSaveForNotLoggedInUsers() {
34
- global $fv_fp;
35
-
36
- //$fv_fp->conf['amazon_bucket'] = array(FV_PLAYER_AMAZON_BUCKET);
37
- $fv_fp->conf['amazon_region'] = array(FV_PLAYER_AMAZON_REGION);
38
- $fv_fp->conf['amazon_key'] = array(FV_PLAYER_AMAZON_ACCESS_KEY);
39
- $fv_fp->conf['amazon_secret'] = array(FV_PLAYER_AMAZON_SECRET);
40
-
41
- // is anybody listening out there?
42
- $this->assertTrue( has_action('wp_ajax_load_s3_assets') );
43
-
44
- // Spoof the nonce in the POST superglobal
45
- //$_POST['_wpnonce'] = wp_create_nonce( 'anything-here-if-needed' );
46
-
47
- // set up POST data for video resume times
48
- // $_POST['action'] = 'fv_wp_flowplayer_video_position_save';
49
-
50
- // call the AJAX which
51
- try {
52
- $this->_handleAjax( 'fv_wp_flowplayer_ajax_load_s3_assets' );
53
- } catch ( WPAjaxDieContinueException $e ) {
54
- $response = json_decode( $this->_last_response );
55
- $this->assertInternalType( 'object', $response );
56
- $this->assertObjectHasAttribute( 'success', $response );
57
- $this->assertFalse( $response->success );
58
- }
59
- }
60
-
61
- }
test/integration/backend/settingsTest.php DELETED
@@ -1,45 +0,0 @@
1
- <?php
2
-
3
- require_once( dirname(__FILE__).'/../fv-player-unittest-case.php');
4
-
5
- /**
6
- * Tests WordPress integration of playlists without any advertisements present
7
- * in the HTML markup.
8
- */
9
- final class FV_Player_SettingsTestCase extends FV_Player_UnitTestCase {
10
-
11
- // we need to convince it is showing the FV Player settings screen!
12
- public static function wpSetUpBeforeClass() {
13
- set_current_screen( 'settings_page_fvplayer' );
14
-
15
- parent::wpSetUpBeforeClass();
16
-
17
- remove_action( 'admin_init', 'wp_admin_headers' );
18
- do_action( 'admin_init' );
19
- }
20
-
21
- public function testSettingsScreen() {
22
-
23
- ob_start();
24
- fv_player_admin_page();
25
- $output = ob_get_clean();
26
-
27
- $one = $this->fix_newlines(file_get_contents(dirname(__FILE__).'/testSettingsScreen.html'));
28
- $two = explode("\n",$this->fix_newlines($output));
29
- foreach( explode("\n",$one) as $k => $v ) {
30
-
31
- /*if( $v != $two[$k]) {
32
- for($i=0;$i<strlen($two[$k]);$i++) {
33
- if( $v[$i] != $two[$k][$i]) {
34
- var_dump( $v[$i].' vs '.$two[$k][$i].' '.ord($two[$k][$i]) );
35
- }
36
- }
37
- }*/
38
-
39
- $this->assertEquals( $v, $two[$k] );
40
- }
41
-
42
- $this->assertEquals( $this->fix_newlines(file_get_contents(dirname(__FILE__).'/testSettingsScreen.html')), $this->fix_newlines($output) );
43
- }
44
-
45
- }
test/integration/backend/testProfileScreen.html DELETED
@@ -1,54 +0,0 @@
1
- <tr class="user-videos">
2
- <th>Videos</th>
3
- <td>
4
- <div class="fv-player-custom-video-list"><form method='POST'><div class="fv-player-custom-video"><div class='fv-player-editor-wrapper' data-key='fv-player-editor-field-_fv_player_user_video'>
5
- <div class='inside inside-child'>
6
- <div class='fv-player-editor-preview'><iframe id='fv_vimeo_40a1ea9c2827d8afc50536475564effe' src='//player.vimeo.com/video/255317467' width='640' height='360' frameborder='0' webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
7
- </div>
8
- <input class='attachement-shortcode fv-player-editor-field' name='fv_player_videos[_fv_player_user_video][]' type='hidden' value='[fvplayer src=&quot;https://vimeo.com/255317467&quot; playlist=&quot;https://vimeo.com/192934117&quot; caption=&quot;;Talking about FV Player&quot;]' />
9
- <div class='edit-video' >
10
- <button class='button fv-player-editor-button'>Edit Video</button>
11
- <button class='button fv-player-editor-remove'>Remove Video</button>
12
- <button class='button fv-player-editor-more' style='display:none'>Add Another Video</button>
13
- </div>
14
-
15
- <div class='add-video' style="display:none">
16
- <button class='button fv-player-editor-button'>Add Video</button>
17
- </div>
18
- </div>
19
- </div><div class='fv-player-editor-wrapper' data-key='fv-player-editor-field-_fv_player_user_video'>
20
- <div class='inside inside-child'>
21
- <div class='fv-player-editor-preview'><iframe id='fv_vimeo_611247c19e9196fbf9433d589da255e1' src='//player.vimeo.com/video/255370388' width='640' height='360' frameborder='0' webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
22
- </div>
23
- <input class='attachement-shortcode fv-player-editor-field' name='fv_player_videos[_fv_player_user_video][]' type='hidden' value='[fvplayer src=&quot;https://vimeo.com/255370388&quot;]' />
24
- <div class='edit-video' >
25
- <button class='button fv-player-editor-button'>Edit Video</button>
26
- <button class='button fv-player-editor-remove'>Remove Video</button>
27
- <button class='button fv-player-editor-more' style='display:none'>Add Another Video</button>
28
- </div>
29
-
30
- <div class='add-video' style="display:none">
31
- <button class='button fv-player-editor-button'>Add Video</button>
32
- </div>
33
- </div>
34
- </div><div class='fv-player-editor-wrapper' data-key='fv-player-editor-field-_fv_player_user_video'>
35
- <div class='inside inside-child'>
36
- <div class='fv-player-editor-preview'><iframe id='fv_ytplayer_5fc2c295c1c8d43b356a8b8ee0c122ca' type='text/html' width='640' height='360'
37
- src='//www.youtube.com/embed/6ZfuNTqbHE8?origin=' frameborder='0' webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
38
- ]</div>
39
- <input class='attachement-shortcode fv-player-editor-field' name='fv_player_videos[_fv_player_user_video][]' type='hidden' value='[fvplayer src=&quot;https://www.youtube.com/watch?v=6ZfuNTqbHE8&quot;]]' />
40
- <div class='edit-video' >
41
- <button class='button fv-player-editor-button'>Edit Video</button>
42
- <button class='button fv-player-editor-remove'>Remove Video</button>
43
- <button class='button fv-player-editor-more' style='display:none'>Add Another Video</button>
44
- </div>
45
-
46
- <div class='add-video' style="display:none">
47
- <button class='button fv-player-editor-button'>Add Video</button>
48
- </div>
49
- </div>
50
- </div><div style="clear: both"></div>
51
- </div>
52
- <input type='hidden' name='fv-player-custom-videos-entity-id[_fv_player_user_video]' value='4' /><input type='hidden' name='fv-player-custom-videos-entity-type[_fv_player_user_video]' value='user' /><input type="hidden" id="fv-player-custom-videos-_fv_player_user_video-0" name="fv-player-custom-videos-_fv_player_user_video-0" value="0926bc6617" /><input type="hidden" name="_wp_http_referer" value="" /><input type='hidden' name='action' value='fv-player-custom-videos-save' /><input type='submit' value='Save Videos' /></form></div> <p class="description">You can put your Vimeo or YouTube links here. <abbr title="These show up as a part of the user bio. Licensed users get FV Player Pro which embeds these video types in FV Player interface without Vimeo or YouTube interface showing up."><span class="dashicons dashicons-editor-help"></span></abbr></p>
53
- </td>
54
- </tr>
test/integration/backend/testSettingsScreen.html DELETED
@@ -1,2073 +0,0 @@
1
- <div class="wrap">
2
- <div style="position: absolute; margin-top: 10px; right: 10px;">
3
- <a href="https://foliovision.com/wordpress/plugins/fv-wordpress-flowplayer" target="_blank" title="Documentation"><img alt="visit foliovision" src="//foliovision.com/shared/fv-logo.png" /></a>
4
- </div>
5
- <div>
6
- <div id="icon-options-general" class="icon32"></div>
7
- <h2>FV Player</h2>
8
- </div>
9
-
10
-
11
- <form id="wpfp_options" method="post" action="">
12
-
13
- <p id="fv_flowplayer_admin_buttons">
14
- <input type="button" class="button fv-license-inactive" onclick="fv_flowplayer_ajax_check('fv_wp_flowplayer_check_license'); return false" value="Apply Pro upgrade" />
15
- <input type="button" class="button" onclick="fv_flowplayer_ajax_check('fv_wp_flowplayer_check_template'); return false" value="Check template" />
16
- <input type="button" class="button" onclick="fv_flowplayer_ajax_check('fv_wp_flowplayer_check_files')" value="Check videos" />
17
-
18
- <input type="text" name="key" id="key" placeholder="Commercial License Key" value="" /> <a title="Click here for license info" target="_blank" href="https://foliovision.com/player/download"><span class="dashicons dashicons-editor-help"></span></a>
19
-
20
- <img class="fv_wp_flowplayer_check_license-spin" style="display: none; " src="http://example.org/wp-includes/images/wpspin.gif" width="16" height="16" />
21
- <img class="fv_wp_flowplayer_check_template-spin" style="display: none; " src="http://example.org/wp-includes/images/wpspin.gif" width="16" height="16" />
22
- <img class="fv_wp_flowplayer_check_files-spin" style="display: none; " src="http://example.org/wp-includes/images/wpspin.gif" width="16" height="16" />
23
- </p>
24
- <div id="fv_flowplayer_admin_notices">
25
- </div>
26
-
27
- <div id="fv_flowplayer_ad">
28
- <div class="text-part">
29
- <h2>FV Wordpress<strong>Flowplayer</strong></h2>
30
- <span class="red-text">with your own branding</span>
31
- <ul>
32
- <li>Put up your own logo</li>
33
- <li>Or remove the logo completely</li>
34
- <li>The best video plugin for Wordpress</li>
35
- </ul>
36
- <a href="http://foliovision.com/wordpress/plugins/fv-wordpress-flowplayer/download" class="red-button"><strong>Easter sale!</strong><br />All Licenses 20% Off</a></p>
37
- </div>
38
- <div class="graphic-part">
39
- <a href="http://foliovision.com/wordpress/plugins/fv-wordpress-flowplayer/buy">
40
- <img width="297" height="239" border="0" src="http://example.org/wp-content/plugins/fv-wordpress-flowplayer/images/fv-wp-flowplayer-led-monitor.png"> </a>
41
- </div>
42
- </div>
43
-
44
- <div id="fv_flowplayer_admin_tabs">
45
- <h2 class="fv-nav-tab-wrapper nav-tab-wrapper">
46
- <a href="#postbox-container-tab_basic" class="nav-tab nav-tab-active" style="outline: 0px;">Setup</a>
47
- <a href="#postbox-container-tab_skin" class="nav-tab" style="outline: 0px;">Skin</a>
48
- <a href="#postbox-container-tab_hosting" class="nav-tab" style="outline: 0px;">Hosting</a>
49
- <a href="#postbox-container-tab_actions" class="nav-tab" style="outline: 0px;">Actions</a>
50
- <a href="#postbox-container-tab_video_intelligence" class="nav-tab" style="outline: 0px;">vi Ads</a>
51
- <a href="#postbox-container-tab_help" class="nav-tab" style="outline: 0px;">Help</a>
52
- <div id="fv_player_js_warning" style=" margin: 8px 40px; display: inline-block; color: darkgrey;" >There Is a Problem with JavaScript.</div>
53
- </h2>
54
- </div>
55
-
56
- <div id="dashboard-widgets" class="metabox-holder fv-metabox-holder columns-1">
57
- <div id='postbox-container-tab_basic' class='postbox-container'>
58
- <div id="normal-sortables" class="meta-box-sortables"><div id="fv_flowplayer_description" class="postbox " >
59
- <button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: </span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span> </span></h2>
60
- <div class="inside">
61
- <table class="form-table">
62
- <tr>
63
- <td colspan="4">
64
- <p>
65
- FV Player is a free, easy-to-use, and complete solution for embedding <strong>MP4</strong>, <strong>WEBM</strong>, <strong>OGV</strong>, <strong>MOV</strong>
66
- and <strong>FLV</strong>
67
- videos into your posts or pages. With MP4 videos, FV Player offers 98&#37; coverage even on mobile devices. </p>
68
- </td>
69
- </tr>
70
- </table>
71
- </div>
72
- </div>
73
- <div id="fv_flowplayer_interface_options" class="postbox " >
74
- <button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Post Interface Options</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Post Interface Options</span></h2>
75
- <div class="inside">
76
- <p>Which features should be available in shortcode editor?</p>
77
- <table class="form-table2">
78
- <tr>
79
- <td class="first"><label for="interface[ads]">Ads:</label></td>
80
- <td>
81
- <p class="description">
82
- <input type="hidden" name="interface[ads]" value="false"/>
83
- <input type="checkbox" name="interface[ads]" id="interface[ads]" value="true" />
84
- </p>
85
- </td>
86
- </tr>
87
- <tr>
88
- <td class="first"><label for="interface[align]">Align:</label></td>
89
- <td>
90
- <p class="description">
91
- <input type="hidden" name="interface[align]" value="false"/>
92
- <input type="checkbox" name="interface[align]" id="interface[align]" value="true" />
93
- </p>
94
- </td>
95
- </tr>
96
- <tr>
97
- <td class="first"><label for="allowuploads">Allow Video Uploads:</label></td>
98
- <td>
99
- <p class="description">
100
- <input type="hidden" name="allowuploads" value="false"/>
101
- <input type="checkbox" name="allowuploads" id="allowuploads" value="true" checked="checked" />
102
- Enables the WP Media Library integraton if you want to host videos on your own server </p>
103
- </td>
104
- </tr>
105
- <tr>
106
- <td class="first"><label for="interface[autoplay]">Autoplay:</label></td>
107
- <td>
108
- <p class="description">
109
- <input type="hidden" name="interface[autoplay]" value="false"/>
110
- <input type="checkbox" name="interface[autoplay]" id="interface[autoplay]" value="true" />
111
- </p>
112
- </td>
113
- </tr>
114
- <tr>
115
- <td class="first"><label for="interface[controlbar]">Controlbar:</label></td>
116
- <td>
117
- <p class="description">
118
- <input type="hidden" name="interface[controlbar]" value="false"/>
119
- <input type="checkbox" name="interface[controlbar]" id="interface[controlbar]" value="true" />
120
- </p>
121
- </td>
122
- </tr>
123
- <tr>
124
- <td class="first"><label for="interface[embed]">Embed:</label></td>
125
- <td>
126
- <p class="description">
127
- <input type="hidden" name="interface[embed]" value="false"/>
128
- <input type="checkbox" name="interface[embed]" id="interface[embed]" value="true" />
129
- </p>
130
- </td>
131
- </tr>
132
- <tr>
133
- <td class="first"><label for="interface[live]">Live Stream:</label></td>
134
- <td>
135
- <p class="description">
136
- <input type="hidden" name="interface[live]" value="false"/>
137
- <input type="checkbox" name="interface[live]" id="interface[live]" value="true" />
138
- </p>
139
- </td>
140
- </tr>
141
- <tr>
142
- <td class="first"><label for="interface[mobile]">Mobile Video:</label></td>
143
- <td>
144
- <p class="description">
145
- <input type="hidden" name="interface[mobile]" value="false"/>
146
- <input type="checkbox" name="interface[mobile]" id="interface[mobile]" value="true" />
147
- </p>
148
- </td>
149
- </tr>
150
- <tr>
151
- <td class="first"><label for="interface[playlist_advance]">Playlist Auto Advance:</label></td>
152
- <td>
153
- <p class="description">
154
- <input type="hidden" name="interface[playlist_advance]" value="false"/>
155
- <input type="checkbox" name="interface[playlist_advance]" id="interface[playlist_advance]" value="true" />
156
- </p>
157
- </td>
158
- </tr>
159
- <tr>
160
- <td class="first"><label for="interface[playlist]">Playlist Style:</label></td>
161
- <td>
162
- <p class="description">
163
- <input type="hidden" name="interface[playlist]" value="false"/>
164
- <input type="checkbox" name="interface[playlist]" id="interface[playlist]" value="true" />
165
- </p>
166
- </td>
167
- </tr>
168
- <tr>
169
- <td class="first"><label for="interface[playlist_captions]">Playlist Captions:</label></td>
170
- <td>
171
- <p class="description">
172
- <input type="hidden" name="interface[playlist_captions]" value="false"/>
173
- <input type="checkbox" name="interface[playlist_captions]" id="interface[playlist_captions]" value="true" />
174
- </p>
175
- </td>
176
- </tr>
177
- <tr>
178
- <td class="first"><label for="interface[share]">Sharing Buttons:</label></td>
179
- <td>
180
- <p class="description">
181
- <input type="hidden" name="interface[share]" value="false"/>
182
- <input type="checkbox" name="interface[share]" id="interface[share]" value="true" />
183
- </p>
184
- </td>
185
- </tr>
186
- <tr>
187
- <td class="first"><label for="interface[speed]">Speed Buttons:</label></td>
188
- <td>
189
- <p class="description">
190
- <input type="hidden" name="interface[speed]" value="false"/>
191
- <input type="checkbox" name="interface[speed]" id="interface[speed]" value="true" />
192
- </p>
193
- </td>
194
- </tr>
195
- <tr>
196
- <td class="first"><label for="interface[splash_text]">Splash Text:</label></td>
197
- <td>
198
- <p class="description">
199
- <input type="hidden" name="interface[splash_text]" value="false"/>
200
- <input type="checkbox" name="interface[splash_text]" id="interface[splash_text]" value="true" />
201
- </p>
202
- </td>
203
- </tr>
204
- <tr>
205
- <td class="first"><label for="interface[subtitles]">Subtitles:</label></td>
206
- <td>
207
- <p class="description">
208
- <input type="hidden" name="interface[subtitles]" value="false"/>
209
- <input type="checkbox" name="interface[subtitles]" id="interface[subtitles]" value="true" />
210
- </p>
211
- </td>
212
- </tr>
213
- <tr>
214
- <td class="first"><label for="interface[sticky]">Sticky:</label></td>
215
- <td>
216
- <p class="description">
217
- <input type="hidden" name="interface[sticky]" value="false"/>
218
- <input type="checkbox" name="interface[sticky]" id="interface[sticky]" value="true" />
219
- </p>
220
- </td>
221
- </tr>
222
- <tr>
223
- <td class="first"><label for="interface[end_actions]">Video Actions:</label></td>
224
- <td>
225
- <p class="description">
226
- <input type="hidden" name="interface[end_actions]" value="false"/>
227
- <input type="checkbox" name="interface[end_actions]" id="interface[end_actions]" value="true" />
228
- Enables end of playlist actions like Loop, Redirect, Show popup and Show splash screen </p>
229
- </td>
230
- </tr>
231
-
232
- <tr>
233
- <td class="first"><label for="interface[lightbox]">Enable video lightbox:</label></td>
234
- <td>
235
- <p class="description">
236
- <input type="hidden" name="interface[lightbox]" value="false"/>
237
- <input type="checkbox" name="interface[lightbox]" id="interface[lightbox]" value="true" />
238
- You can also put in <code>&lt;a href="http://path.to.your/video.mp4" class="colorbox"&gt;Your link title&lt;/a&gt;</code> for a quick lightboxed video. </p>
239
- </td>
240
- </tr>
241
-
242
- <tr>
243
- <td class="first"><label for="interface[shortcode_editor_old]">Enable old interface:</label></td>
244
- <td>
245
- <p class="description">
246
- <input type="hidden" name="interface[shortcode_editor_old]" value="false"/>
247
- <input type="checkbox" name="interface[shortcode_editor_old]" id="interface[shortcode_editor_old]" value="true" />
248
- Not recommended </p>
249
- </td>
250
- </tr>
251
-
252
- <tr>
253
- <td colspan="4">
254
- <input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
255
- </td>
256
- </tr>
257
- </table>
258
- </div>
259
- </div>
260
- <div id="fv_flowplayer_default_options" class="postbox " >
261
- <button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Sitewide FV Player Defaults</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Sitewide FV Player Defaults</span></h2>
262
- <div class="inside">
263
- <style>
264
- p.description { font-style: normal; }
265
- </style>
266
- <table class="form-table2">
267
-
268
- <tr>
269
- <td class="first"><label for="autoplay">Autoplay:</label></td>
270
- <td>
271
- <p class="description">
272
- <input type="hidden" name="autoplay" value="false"/>
273
- <input type="checkbox" name="autoplay" id="autoplay" value="true" />
274
- We make sure only one video per page autoplays. Note that mobile devices don't support autoplay. </p>
275
- </td>
276
- </tr>
277
- <tr>
278
- <td class="first"><label for="auto_buffering">Auto Buffering:</label></td>
279
- <td>
280
- <p class="description">
281
- <input type="hidden" name="auto_buffering" value="false"/>
282
- <input type="checkbox" name="auto_buffering" id="auto_buffering" value="true" />
283
- Works for first 2 videos on the page only, to preserve your bandwidth. </p>
284
- </td>
285
- </tr>
286
-
287
- <tr>
288
- <td><label for="width">Default Video Size:</label></td>
289
- <td>
290
- <p class="description">
291
- <label for="width">Width:</label>&nbsp;<input type="text" class="small" name="width" id="width" value="640" />
292
- <label for="height">Height:</label>&nbsp;<input type="text" class="small" name="height" id="height" value="360" />
293
- Enter values in pixels or 100%. </p>
294
- </td>
295
- </tr>
296
- <tr>
297
- <td><label for="volume">Default Volume:</label></td>
298
- <td>
299
- <p class="description">
300
- <input id="volume" name="volume" type="range" min="0" max="1" step="0.1" value="0.7" class="medium" />
301
- </p>
302
- </td>
303
- </tr>
304
-
305
- <tr>
306
- <td class="first"><label for="disable_videochecker">Disable Admin Video Checker:</label></td>
307
- <td>
308
- <p class="description">
309
- <input type="hidden" name="disable_videochecker" value="false"/>
310
- <input type="checkbox" name="disable_videochecker" id="disable_videochecker" value="true" />
311
- Checks your video encoding when you open a post with video as admin. Notifies you about possible playback issues. </p>
312
- </td>
313
- </tr>
314
- <tr>
315
- <td class="first"><label for="disableembedding">Disable Embed Button:</label></td>
316
- <td>
317
- <p class="description">
318
- <input type="hidden" name="disableembedding" value="false"/>
319
- <input type="checkbox" name="disableembedding" id="disableembedding" value="true" />
320
- Removes embed button from top bar. </p>
321
- </td>
322
- </tr>
323
- <tr>
324
- <td class="first"><label for="playlist_advance">Disable Playlist Autoadvance:</label></td>
325
- <td>
326
- <p class="description">
327
- <input type="hidden" name="playlist_advance" value="false"/>
328
- <input type="checkbox" name="playlist_advance" id="playlist_advance" value="true" />
329
- Playlist won't play the next video automatically. </p>
330
- </td>
331
- </tr>
332
- <tr>
333
- <td class="first"><label for="disablesharing">Disable Sharing:</label></td>
334
- <td>
335
- <p class="description">
336
- <input type="hidden" name="disablesharing" value="false"/>
337
- <input type="checkbox" name="disablesharing" id="disablesharing" value="true" />
338
- Removes sharing buttons from top bar. </p>
339
- </td>
340
- </tr>
341
- <tr>
342
- <td class="first"><label for="disable_video_hash_links">Disable Video Links:</label></td>
343
- <td>
344
- <p class="description">
345
- <input type="hidden" name="disable_video_hash_links" value="false"/>
346
- <input type="checkbox" name="disable_video_hash_links" id="disable_video_hash_links" value="true" />
347
- Removes the "Link" item to the top bar. <span class="more">Clicking the video Link gives your visitors a link to the exact place in the video they are watching. If the post access is restricted, it won't make the video open to public.</span> <a href="#" class="show-more">(&hellip;)</a>
348
- </p>
349
- </td>
350
- </tr>
351
-
352
- <tr>
353
- <td><label for="rtmp">Flash Streaming Server:</label></td>
354
- <td>
355
- <p class="description">
356
- <input type="text" name="rtmp" id="rtmp" value="" placeholder="Enter your default RTMP streaming server (Amazon CloudFront domain)." />
357
- </p>
358
- </td>
359
- </tr>
360
-
361
- <tr>
362
- <td class="first"><label for="allowfullscreen">Fullscreen Button:</label></td>
363
- <td>
364
- <p class="description">
365
- <input type="hidden" name="allowfullscreen" value="false"/>
366
- <input type="checkbox" name="allowfullscreen" id="allowfullscreen" value="true" checked="checked" />
367
- Adds fullscreen button to player top bar. </p>
368
- </td>
369
- </tr>
370
-
371
- <tr>
372
- <td><label for="googleanalytics">Google Analytics ID:</label></td>
373
- <td>
374
- <p class="description">
375
- <input type="text" name="googleanalytics" id="googleanalytics" value="" placeholder="Will be automatically loaded when playing a video." />
376
- </p>
377
- </td>
378
- </tr>
379
- <tr>
380
- <td><label for="logo">Logo:</label></td>
381
- <td>
382
- <input type="text" name="logo" id="logo" value="" class="large" placeholder="You need to have a FV Flowplayer license to use it" />
383
-
384
- <input id="upload_image_button" class="upload_image_button button no-margin small" type="button" value="Upload Image" alt="Select Logo" />
385
-
386
- <select name="logoPosition" class="small">
387
- <option value="bottom-left">Position</option>
388
- <option selected value="bottom-left">Bottom-left</option>
389
- <option value="bottom-right">Bottom-right</option>
390
- <option value="top-left">Top-left</option>
391
- <option value="top-right">Top-right</option>
392
- </select>
393
- </td>
394
- </tr>
395
-
396
- <tr>
397
- <td class="first"><label for="ui_play_button">Play Button:</label></td>
398
- <td>
399
- <p class="description">
400
- <input type="hidden" name="ui_play_button" value="false"/>
401
- <input type="checkbox" name="ui_play_button" id="ui_play_button" value="true" checked="checked" />
402
- Adds play button to player controlbar. </p>
403
- </td>
404
- </tr>
405
-
406
- <tr>
407
- <td><label for="liststyle">Playlist style:</label></td>
408
- <td colspan="3">
409
- <p class="description">
410
- <select id="liststyle" name="liststyle">
411
- <option value="horizontal" selected="selected" >Horizontal</option>
412
- <option value="tabs" >Tabs</option>
413
- <option value="prevnext" >Prev/Next</option>
414
- <option value="vertical" >Vertical</option>
415
- <option value="slider" >Slider</option>
416
- </select>
417
- Enter your default playlist style here </p>
418
- </td>
419
- </tr>
420
-
421
- <tr>
422
- <td class="first"><label for="popupbox">Popup Box:</label></td>
423
- <td>
424
- <p class="description">
425
- <input type="hidden" name="popupbox" value="false"/>
426
- <input type="checkbox" name="popupbox" id="popupbox" value="true" />
427
- Shows a generic "Would you like to replay the video?" message at the end of each video. </p>
428
- </td>
429
- </tr>
430
-
431
- <tr>
432
- <td><label for="sharing_text">Sharing Text:</label></td>
433
- <td>
434
- <p class="description">
435
- <input type="text" name="sharing_email_text" id="sharing_email_text" value="Check out the amazing video here" placeholder="Check out the amazing video here" />
436
- </p>
437
- </td>
438
- </tr>
439
-
440
- <tr>
441
- <td class="first"><label for="ui_speed">Speed Buttons:</label></td>
442
- <td>
443
- <p class="description">
444
- <input type="hidden" name="ui_speed" value="false"/>
445
- <input type="checkbox" name="ui_speed" id="ui_speed" value="true" />
446
- Speed buttons control playback speed and only work in HTML5 compatible browsers. </p>
447
- </td>
448
- </tr>
449
-
450
- <tr>
451
- <td><label for="ui_speed_increment">Speed Step:</label></td>
452
- <td colspan="3">
453
- <p class="description">
454
- <select id="ui_speed_increment" name="ui_speed_increment">
455
- <option value="0.1" >0.1</option>
456
- <option value="0.25" selected="selected" >0.25</option>
457
- <option value="0.5" >0.5</option>
458
- </select>
459
- Speed buttons will increase or decrease the speed in steps of selected value </p>
460
- </td>
461
- </tr>
462
- <tr>
463
- <td><label for="splash">Splash Image:</label></td>
464
- <td>
465
- <input type="text" name="splash" id="splash" value="" class="large" placeholder="Default which will be used for any player without its own splash image." />
466
- <input id="upload_image_button" class="upload_image_button button no-margin small" type="button" value="Upload Image" alt="Select default Splash Screen" /></td>
467
- </tr>
468
-
469
- <tr>
470
- <td class="first"><label for="subtitleOn">Subtitles On By Default:</label></td>
471
- <td>
472
- <p class="description">
473
- <input type="hidden" name="subtitleOn" value="false"/>
474
- <input type="checkbox" name="subtitleOn" id="subtitleOn" value="true" />
475
- Normally you have to hit a button in controlbar to turn on subtitles. </p>
476
- </td>
477
- </tr>
478
-
479
- <tr>
480
- <td style="width: 250px"><label for="lightbox_images">Use video lightbox for images as well:</label></td>
481
- <td>
482
- <p class="description">
483
- <input type="hidden" value="false" name="lightbox_images" />
484
- <input type="checkbox" value="true" name="lightbox_images" id="lightbox_images" />
485
- Will group images as well as videos into the same lightbox gallery. Turn <strong>off</strong> your lightbox plugin when using this. <span class="more">Also works with WordPress <code>[gallery]</code> galleries - these are automatically switched to link to image URLs rather than the attachment pages.</span> <a href="#" class="show-more">(&hellip;)</a>
486
- </p>
487
- </td>
488
- </tr>
489
- <tr id="lightbox-wp-galleries">
490
- <td style="width: 250px"><label for="lightbox_improve_galleries">Use video lightbox for WP Galleries:</label></td>
491
- <td>
492
- <p class="description">
493
- <input type="hidden" value="false" name="lightbox_improve_galleries" />
494
- <input type="checkbox" value="true" name="lightbox_improve_galleries" id="lightbox_improve_galleries" />
495
- Your gallery items will link to image files directly to allow this. </p>
496
- </td>
497
- </tr>
498
- <script>
499
- jQuery(document).ready(function(){
500
- jQuery('[name="pro[interface][lightbox]"]').parents('td').replaceWith('<td><p>Setting <a href="#interface[live]">moved</a></p></td>');
501
- jQuery('[name="pro[lightbox_images]"]').parents('td').replaceWith('<td><p>Setting <a href="#subtitleOn">moved</a></p></td>');
502
- var lightbox_images = jQuery('#lightbox_images');
503
- if(lightbox_images.attr('checked')){
504
- jQuery('#lightbox-wp-galleries').show();
505
- }else{
506
- jQuery('#lightbox-wp-galleries').hide();
507
- }
508
- lightbox_images.on('click',function(){
509
- if(jQuery(this).attr('checked')){
510
- jQuery('#lightbox-wp-galleries').show();
511
- }else{
512
- jQuery('#lightbox-wp-galleries').hide();
513
- }
514
- })
515
- })
516
- </script>
517
- <tr>
518
- <td class="first"><label for="video_position_save_enable">Remember video position:</label></td>
519
- <td>
520
- <p class="description">
521
- <input type="hidden" name="video_position_save_enable" value="false"/>
522
- <input type="checkbox" name="video_position_save_enable" id="video_position_save_enable" value="true" />
523
- Stores the last video play position for users, so they can continue watching from where they left. <span class="more">It stored in usermeta for logged in users and in a localStorage or cookie for guest users.</span> <a href="#" class="show-more">(&hellip;)</a>
524
- </p>
525
- </td>
526
- </tr>
527
- </table>
528
- <small class="alignright">
529
- Missing settings? Check <a class="fv-settings-anchor" href="#fv_flowplayer_integrations">Integrations/Compatbility</a> box below. </small>
530
- <table class="form-table2">
531
- <tr>
532
- <td colspan="4">
533
- <input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
534
- </td>
535
- </tr>
536
- </table>
537
- <script>
538
- jQuery(document).ready(function($) {
539
- var fv_flowplayer_uploader;
540
- var fv_flowplayer_uploader_button;
541
-
542
- $(document).on( 'click', '.upload_image_button', function(e) {
543
- e.preventDefault();
544
-
545
- fv_flowplayer_uploader_button = jQuery(this);
546
- jQuery('.fv_flowplayer_target').removeClass('fv_flowplayer_target' );
547
- fv_flowplayer_uploader_button.parents('tr').find('input[type=text]').addClass('fv_flowplayer_target' );
548
-
549
- //If the uploader object has already been created, reopen the dialog
550
- if (fv_flowplayer_uploader) {
551
- fv_flowplayer_uploader.open();
552
- return;
553
- }
554
-
555
- //Extend the wp.media object
556
- fv_flowplayer_uploader = wp.media.frames.file_frame = wp.media({
557
- title: 'Pick the image',
558
- button: {
559
- text: 'Choose'
560
- },
561
- multiple: false
562
- });
563
-
564
- fv_flowplayer_uploader.on('open', function() {
565
- jQuery('.media-frame-title h1').text(fv_flowplayer_uploader_button.attr('alt'));
566
- });
567
-
568
- //When a file is selected, grab the URL and set it as the text field's value
569
- fv_flowplayer_uploader.on('select', function() {
570
- attachment = fv_flowplayer_uploader.state().get('selection').first().toJSON();
571
-
572
- $('.fv_flowplayer_target').val(attachment.url);
573
- $('.fv_flowplayer_target').removeClass('fv_flowplayer_target' );
574
-
575
- /*if( attachment.type == 'video' ) {
576
- if( typeof(attachment.width) != "undefined" && attachment.width > 0 ) {
577
- $('#fv_wp_flowplayer_field_width').val(attachment.width);
578
- }
579
- if( typeof(attachment.height) != "undefined" && attachment.height > 0 ) {
580
- $('#fv_wp_flowplayer_field_height').val(attachment.height);
581
- }
582
- if( typeof(attachment.fileLength) != "undefined" ) {
583
- $('#fv_wp_flowplayer_file_info').show();
584
- $('#fv_wp_flowplayer_file_duration').html(attachment.fileLength);
585
- }
586
- if( typeof(attachment.filesizeHumanReadable) != "undefined" ) {
587
- $('#fv_wp_flowplayer_file_info').show();
588
- $('#fv_wp_flowplayer_file_size').html(attachment.filesizeHumanReadable);
589
- }
590
-
591
- } else if( attachment.type == 'image' && typeof(fv_flowplayer_set_post_thumbnail_id) != "undefined" ) {
592
- if( jQuery('#remove-post-thumbnail').length > 0 ){
593
- return;
594
- }
595
- jQuery.post(ajaxurl, {
596
- action:"set-post-thumbnail",
597
- post_id: fv_flowplayer_set_post_thumbnail_id,
598
- thumbnail_id: attachment.id,
599
- _ajax_nonce: fv_flowplayer_set_post_thumbnail_nonce,
600
- cookie: encodeURIComponent(document.cookie)
601
- }, function(str){
602
- var win = window.dialogArguments || opener || parent || top;
603
- if ( str == '0' ) {
604
- alert( setPostThumbnailL10n.error );
605
- } else {
606
- jQuery('#postimagediv .inside').html(str);
607
- jQuery('#postimagediv .inside #plupload-upload-ui').hide();
608
- }
609
- } );
610
-
611
- }*/
612
-
613
- });
614
-
615
- //Open the uploader dialog
616
- fv_flowplayer_uploader.open();
617
-
618
- });
619
-
620
- });
621
- </script>
622
- <div class="clear"></div>
623
- </div>
624
- </div>
625
- <div id="fv_flowplayer_integrations" class="postbox " >
626
- <button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Integrations/Compatibility</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Integrations/Compatibility</span></h2>
627
- <div class="inside">
628
- <p>Following options are suitable for web developers and programmers.</p>
629
- <table class="form-table2">
630
-
631
- <tr>
632
- <td class="first"><label for="fixed_size">Always use fixed size player:</label></td>
633
- <td>
634
- <p class="description">
635
- <input type="hidden" name="fixed_size" value="false"/>
636
- <input type="checkbox" name="fixed_size" id="fixed_size" value="true" />
637
- Enable to force video size at cost of loosing the video responsiveness. </p>
638
- </td>
639
- </tr>
640
- <tr>
641
- <td class="first"><label for="css_disable">Disable saving skin CSS to a static file:</label></td>
642
- <td>
643
- <p class="description">
644
- <input type="hidden" name="css_disable" value="false"/>
645
- <input type="checkbox" name="css_disable" id="css_disable" value="true" />
646
- Normally the player CSS configuration is stored in wp-content/fv-player-custom/style-{blog_id}.css. <span class="more">We do this to avoid a big style tag in your site &lt;head&gt;. Don't edit this file though, as it will be overwritten by plugin update or saving its options!</span> <a href="#" class="show-more">(&hellip;)</a>
647
- </p>
648
- </td>
649
- </tr>
650
- <tr>
651
- <td class="first"><label for="hlsjs">Enable HLS.js:</label></td>
652
- <td>
653
- <p class="description">
654
- <input type="hidden" name="hlsjs" value="false"/>
655
- <input type="checkbox" name="hlsjs" id="hlsjs" value="true" checked="checked" />
656
- Allows HLS playback in all modern browsers. <span class="more">HLS normally plays only on iOS, Mac Safari and new Android versions. FV Player increases the compatibility by using Flash engine for HLS. With this option you can go even further and modern browsers supporting MediaSource will play HLS even without Flash. Make sure you setup the required CORS headers.</span> <a href="#" class="show-more">(&hellip;)</a>
657
- </p>
658
- </td>
659
- </tr>
660
-
661
- <tr>
662
- <td><label for="css_disable">Enable profile videos:</label></td>
663
- <td>
664
- <div class="description">
665
- <input type="hidden" name="profile_videos_enable_bio" value="false" />
666
- <input type="checkbox" name="profile_videos_enable_bio" id="profile_videos_enable_bio" value="true" />
667
- Check your site carefully after enabling. Videos attached to the user profile will be showing as a part of the user bio. <a href="#" class="show-more">(&hellip;)</a>
668
- <div class="more">
669
- <p>This feature is designed for YouTube and Vimeo videos and works best for our licensed users who get these videos playing without YouTube or Vimeo branding.</p>
670
- <p>Some themes show author bio on the author post archive automatically (Genesis framework and others). Or you can also just put this code into your theme archive.php template, right before <code>while ( have_posts() )</code> is called:</p>
671
- <blockquote>
672
- <pre>
673
- &lt;?php if ( is_author() &amp;&amp; get_the_author_meta( 'description' ) ) : ?&gt;
674
- &lt;div class=&quot;author-info&quot;&gt;
675
- &lt;div class=&quot;author-avatar&quot;&gt;
676
- &lt;?php echo get_avatar( get_the_author_meta( 'user_email' ) ); ?&gt;
677
- &lt;/div&gt;
678
-
679
- &lt;div class=&quot;author-description&quot;&gt;
680
- &lt;?php the_author_meta( 'description' ); ?&gt;
681
- &lt;/div&gt;
682
- &lt;/div&gt;
683
- &lt;?php endif; ?&gt;
684
- </pre>
685
- </blockquote>
686
- <p>We will be adding integration for it for popular user profile plugins.</p>
687
-
688
- </div>
689
- </div>
690
- </td>
691
- </tr>
692
-
693
- <tr>
694
- <td class="first"><label for="integrations[wp_core_video]">Handle WordPress <code><small>[video]</small></code> shortcodes:</label></td>
695
- <td>
696
- <p class="description">
697
- <input type="hidden" name="integrations[wp_core_video]" value="false"/>
698
- <input type="checkbox" name="integrations[wp_core_video]" id="integrations[wp_core_video]" value="true" />
699
- ...and also the YouTube links </p>
700
- </td>
701
- </tr>
702
- <tr>
703
- <td class="first"><label for="js-everywhere">Load FV Flowplayer JS everywhere:</label></td>
704
- <td>
705
- <p class="description">
706
- <input type="hidden" name="js-everywhere" value="false"/>
707
- <input type="checkbox" name="js-everywhere" id="js-everywhere" value="true" />
708
- If you use some special JavaScript integration you might prefer this option. <span class="more">Otherwise our JavaScript only loads if the shortcode is found in any of the posts being currently displayed.</span> <a href="#" class="show-more">(&hellip;)</a>
709
- </p>
710
- </td>
711
- </tr>
712
- <tr>
713
- <td class="first"><label for="parse_comments">Parse Vimeo and YouTube links:</label></td>
714
- <td>
715
- <p class="description">
716
- <input type="hidden" name="parse_comments" value="false"/>
717
- <input type="checkbox" name="parse_comments" id="parse_comments" value="true" />
718
- Affects comments, bbPress and BuddyPress. These links will be displayed as videos. <span class="more">This option makes most sense together with FV Player Pro as it embeds these videos using FV Player. Enables use of shortcodes in comments and bbPress.</span> <a href="#" class="show-more">(&hellip;)</a>
719
- </p>
720
- </td>
721
- </tr>
722
- <tr>
723
- <td class="first"><label for="postthumbnail">Post Thumbnail:</label></td>
724
- <td>
725
- <p class="description">
726
- <input type="hidden" name="postthumbnail" value="false"/>
727
- <input type="checkbox" name="postthumbnail" id="postthumbnail" value="true" />
728
- Setting a video splash screen from the media library will automatically make it the splash image if there is none. </p>
729
- </td>
730
- </tr>
731
- <tr>
732
- <td class="first"><label for="rtmp-live-buffer">RTMP bufferTime tweak:</label></td>
733
- <td>
734
- <p class="description">
735
- <input type="hidden" name="rtmp-live-buffer" value="false"/>
736
- <input type="checkbox" name="rtmp-live-buffer" id="rtmp-live-buffer" value="true" />
737
- Use if your live streams are not smooth. <span class="more">Adobe <a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#bufferTime">recommends</a> to set bufferTime to 0 for live streams, but if your stream is not smooth, you can use this setting.</span> <a href="#" class="show-more">(&hellip;)</a>
738
- </p>
739
- </td>
740
- </tr>
741
-
742
- <tr>
743
- <td class="first"><label for="db_duration">Scan video length:</label></td>
744
- <td>
745
- <p class="description">
746
- <input type="hidden" name="db_duration" value="false" />
747
- <input type="checkbox" name="db_duration" id="db_duration" value="true" />
748
- Turn off if you experience issues when saving posts! <span class="more">Turn on to enable video duration scanning. Currently posts in queue. </span> <a href="#" class="show-more">(&hellip;)</a>
749
- </p>
750
- </td>
751
- </tr>
752
- <!--<tr>
753
- <td style="width: 350px"><label for="optimizepress2">Handle OptimizePress 2 videos (<abbr title="Following attributes are not currently supported: margin, border">?</abbr>):</label></td>
754
- <td>
755
- <input type="hidden" name="integrations[optimizepress2]" value="false" />
756
- <input type="checkbox" name="integrations[optimizepress2]" id="optimizepress2" value="true" />
757
- </td>
758
- </tr>-->
759
-
760
- <tr>
761
- <td class="first"><label for="integrations[embed_iframe]">Use iframe embedding:</label></td>
762
- <td>
763
- <p class="description">
764
- <input type="hidden" name="integrations[embed_iframe]" value="false"/>
765
- <input type="checkbox" name="integrations[embed_iframe]" id="integrations[embed_iframe]" value="true" />
766
- Beta version! New kind of embedding which supports all the features in embedded player. </p>
767
- </td>
768
- </tr>
769
- <tr>
770
- <td class="first"><label for="integrations[featured_img]">Add featured image automatically:</label></td>
771
- <td>
772
- <p class="description">
773
- <input type="hidden" name="integrations[featured_img]" value="false"/>
774
- <input type="checkbox" name="integrations[featured_img]" id="integrations[featured_img]" value="true" />
775
- If the featured image is not set, splash image of the first player will be used. </p>
776
- </td>
777
- </tr>
778
-
779
- <tr>
780
- <td><label for="facebook_sharing">Facebook Video Sharing:</label></td>
781
- <td>
782
- <p class="description">
783
- <input type="hidden" name="integrations[facebook_sharing]" value="false" />
784
- <input type="checkbox" name="integrations[facebook_sharing]" id="facebook_sharing" value="true" />
785
- When sharing your post to Facebook the first MP4 video will be shared directly rather than the post excerpt. <span class="more"><strong>Requirements</strong>: video has to be on https:// and splash screen has to be present. Videos with download protection are automatically excluded.</span> <a href="#" class="show-more">(&hellip;)</a>
786
- </p>
787
- </td>
788
- </tr>
789
- <tr>
790
- <td colspan="4">
791
- <input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
792
- </td>
793
- </tr>
794
- </table>
795
- </div>
796
- </div>
797
- <div id="fv_flowplayer_mobile" class="postbox " >
798
- <button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Mobile Settings</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Mobile Settings</span></h2>
799
- <div class="inside">
800
-
801
- <table class="form-table2">
802
- <tr>
803
- <td class="first"><label for="mobile_native_fullscreen">Use native fullscreen on mobile:</label></td>
804
- <td>
805
- <p class="description">
806
- <input type="hidden" name="mobile_native_fullscreen" value="false"/>
807
- <input type="checkbox" name="mobile_native_fullscreen" id="mobile_native_fullscreen" value="true" />
808
- Stops popups, ads or subtitles from working, but provides faster interface. We set this for Android < 4.4 and iOS < 7 automatically. </p>
809
- </td>
810
- </tr>
811
- <tr>
812
- <td class="first"><label for="mobile_force_fullscreen">Force fullscreen on mobile (beta):</label></td>
813
- <td>
814
- <p class="description">
815
- <input type="hidden" name="mobile_force_fullscreen" value="false"/>
816
- <input type="checkbox" name="mobile_force_fullscreen" id="mobile_force_fullscreen" value="true" />
817
- Video playback will start in fullscreen. iPhone with iOS < 10 always forces fullscreen for video playback. </p>
818
- </td>
819
- </tr>
820
- <tr>
821
- <td colspan="4">
822
- <input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
823
- </td>
824
- </tr>
825
- </table>
826
- </div>
827
- </div>
828
- <div id="fv_flowplayer_seo" class="postbox " >
829
- <button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Video SEO</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Video SEO</span></h2>
830
- <div class="inside">
831
- <table class="form-table2">
832
- <tr>
833
- <td class="first"><label for="integrations[schema_org]">Use Schema.org markup:</label></td>
834
- <td>
835
- <p class="description">
836
- <input type="hidden" name="integrations[schema_org]" value="false"/>
837
- <input type="checkbox" name="integrations[schema_org]" id="integrations[schema_org]" value="true" />
838
- Adds the video meta data information for search engines. </p>
839
- </td>
840
- </tr>
841
- <tr>
842
- <td class="first"><label for="video_sitemap">Use XML Video Sitemap:</label></td>
843
- <td>
844
- <p class="description">
845
- <input type="hidden" name="video_sitemap" value="false"/>
846
- <input type="checkbox" name="video_sitemap" id="video_sitemap" value="true" />
847
- Creates <code>http://example.org/video-sitemap.xml</code> which you can submit via Google Webmaster Tools. <span class="more">As feeds tend to be cached by web browser make sure you clear your browser cache if you are doing some testing.</span> <a href="#" class="show-more">(&hellip;)</a>
848
- </p>
849
- </td>
850
- </tr>
851
- <tr>
852
- <td><label for="video_sitemap_meta">Sitemap Post Meta <a href="#" class="show-more">(?)</a>:</label></td>
853
- <td>
854
- <input id="video_sitemap_meta" name="video_sitemap_meta" type="text" value="" />
855
- <p class="description"><span class="more">You can enter post meta keys here, use <code>,</code> to separate multiple values.</span></p>
856
- </td>
857
- </tr>
858
- <tr>
859
- <td colspan="4">
860
- <input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
861
- </td>
862
- </tr>
863
- </table>
864
- </div>
865
- </div>
866
- <div id="fv_flowplayer_conversion" class="postbox " >
867
- <button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Conversion</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Conversion</span></h2>
868
- <div class="inside">
869
- <p>This section allows you to convert videos posted using other plugins to FV Player shortcodes.</p>
870
- <table class="form-table2" style="margin: 5px; ">
871
- <tr>
872
- <td>
873
- <input type="button" class="button" value="Convert JW Player shortcodes" style="margin-top: 2ex;" onclick="if( confirm('This converts the [jwplayer] shortcodes into [fvplayer] shortcodes.\n\n Please make sure you backup your database before continuing. You can use revisions to get back to previos versions of your posts as well.') ) location.href='http://example.org/wp-admin/options-general.php?page=fvplayer&amp;convert_jwplayer=f13b4f40a5'; "/>
874
- </td>
875
- </tr>
876
- </table>
877
- </div>
878
- </div>
879
- <div id="fv_player_pro" class="postbox " >
880
- <button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Pro Features</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Pro Features</span></h2>
881
- <div class="inside">
882
- <p><a href="http://foliovision.com/wordpress/plugins/fv-wordpress-flowplayer/download">Purchase FV Flowplayer license</a> to enable Pro features!</p>
883
- <table class="form-table2">
884
- <tr>
885
- <td class="first"><label>Advanced Vimeo embeding:</label></td>
886
- <td>
887
- <p class="description">
888
- <input type="checkbox" checked="checked" disabled="true" />
889
- Use Vimeo as your video host and use all of FV Flowplayer features. </p>
890
- </td>
891
- </tr>
892
- <tr>
893
- <td><label>Advanced YouTube embeding:</label></td>
894
- <td>
895
- <p class="description">
896
- <input type="checkbox" checked="checked" disabled="true" />
897
- Use YouTube as your video host and use all of FV Flowplayer features. </p>
898
- </td>
899
- </tr>
900
- <tr>
901
- <td><label>Enable user defined AB loop:</label></td>
902
- <td>
903
- <p class="description">
904
- <input type="checkbox" checked="checked" disabled="true" />
905
- Let your users repeat the parts of the video which they like! </p>
906
- </td>
907
- </tr>
908
- <tr>
909
- <td><label>Enable video lightbox:</label></td>
910
- <td>
911
- <p class="description">
912
- <input type="checkbox" checked="checked" disabled="true" />
913
- Enables Lightbox video gallery to show videos in a lightbox popup! </p>
914
- </td>
915
- </tr>
916
- <tr>
917
- <td><label>Enable quality switching:</label></td>
918
- <td>
919
- <p class="description">
920
- <input type="checkbox" checked="checked" disabled="true" />
921
- Upload your videos in multiple quality for best user experience with YouTube-like quality switching! </p>
922
- </td>
923
- </tr>
924
- <tr>
925
- <td><label>Amazon CloudFront protected content:</label></td>
926
- <td>
927
- <p class="description">
928
- <input type="checkbox" checked="checked" disabled="true" />
929
- Protect your Amazon CDN hosted videos.
930
- </p>
931
- </td>
932
- </tr>
933
- <tr>
934
- <td><label>Autoplay just once:</label></td>
935
- <td>
936
- <p class="description">
937
- <input type="checkbox" disabled="true" />
938
- Makes sure each video autoplays only once for each visitor. </p>
939
- </td>
940
- </tr>
941
- <tr>
942
- <td><label>Enable video ads:</label></td>
943
- <td>
944
- <p class="description">
945
- <input type="checkbox" disabled="true" />
946
- Define your own videos ads to play in together with your videos - postroll or prerool </p>
947
- </td>
948
- </tr>
949
- </table>
950
- <p><strong>Upcoming pro features</strong>:</p>
951
- <table class="form-table2">
952
- <tr>
953
- <td class="first"><label>Enable PayWall:</label></td>
954
- <td>
955
- <p class="description">
956
- <input type="checkbox" checked="checked" disabled="true" />
957
- Monetize the video content on your membership site. </p>
958
- </td>
959
- </tr>
960
- </table>
961
- </div>
962
- </div>
963
- </div><input type="hidden" id="closedpostboxesnonce" name="closedpostboxesnonce" value="d28516cc79" /><input type="hidden" id="meta-box-order-nonce" name="meta-box-order-nonce" value="3edef551d9" />
964
- </div>
965
- <div id='postbox-container-tab_skin' class='postbox-container' style="">
966
- <div id="normal-sortables" class="meta-box-sortables"><div id="fv_flowplayer_description" class="postbox " >
967
- <button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: </span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span> </span></h2>
968
- <div class="inside">
969
- <table class="form-table">
970
- <tr>
971
- <td colspan="4">
972
- <p>
973
- You can customize the colors of the player to match your website. </p>
974
- </td>
975
- </tr>
976
- </table>
977
- </div>
978
- </div>
979
- <div id="flowplayer-wrapper" class="postbox " >
980
- <button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Player Skin</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Player Skin</span></h2>
981
- <div class="inside">
982
- <style id="fv-style-preview"></style>
983
- <div class="flowplayer-wrapper">
984
- <div id="wpfp_1b7da827d9fee9aa6d5bb9c5dca973bf" class="flowplayer no-brand is-splash fvp-play-button" style="max-width: 100%; background-image: url(https://i.vimeocdn.com/video/609485450_1280.jpg);" data-ratio="0.5625">
985
- <div class="fp-ratio" style="padding-top: 56.25%"></div>
986
- <div class='fvp-share-bar'><ul class="fvp-sharing">
987
- <li><a class="sharing-facebook" href="https://www.facebook.com/sharer/sharer.php?u=" target="_blank">Facebook</a></li>
988
- <li><a class="sharing-twitter" href="https://twitter.com/home?status=Test+Blog+" target="_blank">Twitter</a></li>
989
- <li><a class="sharing-google" href="https://plus.google.com/share?url=" target="_blank">Google+</a></li>
990
- <li><a class="sharing-email" href="mailto:?body=Check%20out%20the%20amazing%20video%20here%3A%20" target="_blank">Email</a></li></ul><div><label><a class="embed-code-toggle" href="#"><strong>Embed</strong></a></label></div><div class="embed-code"><label>Copy and paste this HTML code into your webpage to embed.</label><textarea></textarea></div></div>
991
- </div>
992
- Hint: play the video to see live preview of the color settings </div>
993
- <table class="form-table2 flowplayer-settings fv-player-interface-form-group">
994
- <tr>
995
- <td><label for="hasBorder">Border</label></td>
996
- <td><input type="hidden" name="hasBorder" value="false" />
997
- <input type="checkbox" name="hasBorder" id="hasBorder" value="true"
998
- data-fv-preview=".flowplayer{border:%val%px solid!important;}"/>
999
- </td>
1000
-
1001
- </tr>
1002
- <tr>
1003
- <td><label for="borderColor">Border color</label></td>
1004
- <td><input class="color" id="borderColor" name="borderColor" type="text" value="#666666"
1005
- data-fv-preview=".flowplayer{border-color:#%val%!important;}"/></td>
1006
- </tr>
1007
- <tr>
1008
- <td><label for="marginBottom">Bottom Margin</label></td>
1009
- <td><input id="marginBottom" name="marginBottom" title="Enter value in pixels" type="text" value="28"
1010
- data-fv-preview=".flowplayer { margin: 0 auto %val%px auto!important; display: block!important; }
1011
- .flowplayer.fixed-controls { margin: 0 auto calc(%val%px + 30px) auto!important; display: block!important; }
1012
- .flowplayer.has-abloop { margin-bottom: %val%px!important; }
1013
- .flowplayer.fixed-controls.has-abloop { margin-bottom: calc(%val%px + 30px)!important; }"/></td>
1014
- </tr>
1015
- <tr>
1016
- <td><label for="bufferColor">Buffer</label></td>
1017
- <td><input class="color" id="bufferColor" name="bufferColor" type="text" value="#eeeeee"
1018
- data-fv-preview=".flowplayer .fp-volumeslider, .flowplayer .noUi-background { background-color: #%val% !important; }
1019
- .flowplayer .fp-buffer, .flowplayer .fv-ab-loop .noUi-handle { background-color: #%val% !important; }" /></td>
1020
- </tr>
1021
- <tr>
1022
- <td><label for="canvas">Canvas</label></td>
1023
- <td><input class="color" id="canvas" name="canvas" type="text" value="#000000"
1024
- data-fv-preview=".flowplayer { background-color: #%val%!important; }"/></td>
1025
- </tr>
1026
- <tr>
1027
- <td><label for="backgroundColor">Controlbar</label></td>
1028
- <td><input class="color" id="backgroundColor" name="backgroundColor" type="text" value="#333333"
1029
- data-fv-preview=".flowplayer .fv-ab-loop .noUi-handle { color:#%val%!important; }
1030
- .fv_player_popup { background: #%val%!important;}
1031
- .fvfp_admin_error_content { background: #%val%!important; }
1032
- .flowplayer .fp-controls, .flowplayer .fv-ab-loop, .fv-player-buttons a:active, .fv-player-buttons a { background-color: #%val% !important; }"/></td>
1033
- </tr>
1034
- <tr>
1035
- <td><label for="font-face">Font Face</label></td>
1036
- <td>
1037
- <select id="font-face" name="font-face" data-fv-preview="#content .flowplayer, .flowplayer { font-family: %val%; }">
1038
- <option value="inherit">(inherit from template)</option>
1039
- <option value="&quot;Courier New&quot;, Courier, monospace">Courier New</option>
1040
- <option value="Tahoma, Geneva, sans-serif" selected="selected">Tahoma, Geneva</option>
1041
- </select>
1042
- </td>
1043
- </tr>
1044
- <tr>
1045
- <td class="second-column"><label for="player-position">Player position</label></td>
1046
- <td>
1047
- <select id="player-position" name="player-position" data-fv-preview=".flowplayer { margin-left: 0; }">
1048
- <option value="" selected="selected">Centered</option>
1049
- <option value="left">Left (no text-wrap)</option>
1050
- </select>
1051
- </td>
1052
- </tr>
1053
- <tr>
1054
- <td><label for="progressColor">Progress</label></td>
1055
- <td><input class="color" id="progressColor" name="progressColor" type="text" value="#bb0000"
1056
- data-fv-preview=".flowplayer .fp-volumelevel { background-color: #%val%!important; }
1057
- .flowplayer .fp-progress, .flowplayer .fv-ab-loop .noUi-connect, .fv-player-buttons a.current { background-color: #%val% !important; }
1058
- .flowplayer .fp-dropdown li.active { background-color: #%val% !important }"/></td>
1059
- </tr>
1060
- <tr>
1061
- <td><label for="timeColor">Time</label></td>
1062
- <td><input class="color" id="timeColor" name="timeColor" type="text" value="#eeeeee"
1063
- data-fv-preview=".flowplayer .fp-elapsed { color: #%val% !important; }
1064
- .fv-wp-flowplayer-notice-small { color: #%val% !important; }"/></td>
1065
- </tr>
1066
- <tr>
1067
- <td><label for="durationColor">Total time</label></td>
1068
- <td><input class="color" id="durationColor" name="durationColor" type="text" value="#eeeeee"
1069
- data-fv-preview=".flowplayer .fp-controls, .flowplayer .fv-ab-loop, .fv-player-buttons a:active, .fv-player-buttons a { color:#%val% !important; }"/></td>
1070
- </tr>
1071
- <tr>
1072
- <td colspan="2">
1073
- <input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
1074
- </td>
1075
- </tr>
1076
- </table>
1077
- <div style="clear: both"></div>
1078
- </div>
1079
- </div>
1080
- <div id="fv_flowplayer_skin_playlist" class="postbox " >
1081
- <button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Playlist</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Playlist</span></h2>
1082
- <div class="inside">
1083
- <div class="flowplayer-wrapper">
1084
- <div class="fp-playlist-external fv-playlist-design-2017 fp-playlist-horizontal fp-playlist-has-captions" rel="wpfp_1b7da827d9fee9aa6d5bb9c5dca973bf">
1085
- <a href='#' onclick='return false' data-item='{"sources":[{"src":"https:\/\/player.vimeo.com\/external\/196881410.hd.mp4?s=24645ecff21ff60079fc5b7715a97c00f90c6a18&profile_id=174&oauth2_token_id=3501005","type":"video\/mp4"}],"subtitles":[{"srclang":"en","label":"English","src":"http:\/\/example.org\/wp-content\/plugins\/fv-wordpress-flowplayer\/images\/test-subtitles.vtt"}]}'><div style='background-image: url("https://i.vimeocdn.com/video/608654918_295x166.jpg")'></div><h4><span>Foliovision Video</span></h4></a>
1086
- <a href='#' onclick='return false' data-item='{"sources":[{"src":"https:\/\/player.vimeo.com\/external\/224781088.sd.mp4?s=face4dbb990b462826c8e1e43a9c66c6a9bb5585&profile_id=165&oauth2_token_id=3501005","type":"video\/mp4"}]}'><div style='background-image: url("https://i.vimeocdn.com/video/643908843_295x166.jpg")'></div><h4><span>Lapinthrope Extras - Roy Thompson Hall Dance</span></h4></a>
1087
- <a href='#' onclick='return false' data-item='{"sources":[{"src":"https:\/\/player.vimeo.com\/external\/45864857.hd.mp4?s=94fddee594da3258c9e10355f5bad8173c4aee7b&profile_id=113&oauth2_token_id=3501005","type":"video\/mp4"}]}'><div style='background-image: url("https://i.vimeocdn.com/video/319116053_295x166.jpg")'></div><h4><span>Romeo and Juliet Ballet Schloss Kittsee</span></h4></a>
1088
- </div>
1089
- Hint: you can click the thumbnails to switch videos in the above player. This preview uses the horizontal playlist style.
1090
- </div>
1091
- <table class="form-table2 flowplayer-settings fv-player-interface-form-group">
1092
- <tr>
1093
- <td><label for="playlist-design">Playlist Design</label></td>
1094
- <td>
1095
- <select id="playlist-design" name="playlist-design" data-fv-preview="">
1096
- <option value="2017" selected="selected">2017</option>
1097
- <option value="2017 visible-captions">2017 with captions</option>
1098
- <option value="2014">2014</option>
1099
- </select>
1100
- </td>
1101
- </tr>
1102
- <tr>
1103
- <td><label for="playlistBgColor">Background Color</label></td>
1104
- <td><input class="color" id="playlistBgColor" name="playlistBgColor" type="text" value="#808080"
1105
- data-fv-preview=".fp-playlist-external > a > span { background-color:#%val%; }"/></td>
1106
- </tr>
1107
- <tr>
1108
- <td><label for="playlistSelectedColor">Active Item</label></td>
1109
- <td><input class="color" id="playlistSelectedColor" name="playlistSelectedColor" type="text" value="#bb0000"
1110
- data-fv-preview=".fp-playlist-external.fv-playlist-design-2014 a.is-active,.fp-playlist-external.fv-playlist-design-2014 a.is-active h4,.fp-playlist-external.fp-playlist-only-captions a.is-active,.fp-playlist-external.fp-playlist-only-captions a.is-active h4 { color:#%val%; }"/></td>
1111
- </tr>
1112
- <tr>
1113
- <td><label for="playlistFontColor-proxy">Font Color</label></td>
1114
- <td>
1115
- <input class="color" id="playlistFontColor-proxy" data-previous="" style="display:none;" type="text" value="" />
1116
- <input id="playlistFontColor" name="playlistFontColor" type="hidden" value=""
1117
- data-fv-preview=".fp-playlist-external > a { color:#%val%; } #dashboard-widgets .flowplayer-wrapper .fp-playlist-external h4{color: #%val% !important;}"/>
1118
- <a class="playlistFontColor-show" >Use custom color</a>
1119
- <a class="playlistFontColor-hide" style="display:none;">Inherit from theme</a>
1120
- </td>
1121
- </tr>
1122
- <tr>
1123
- <td colspan="2">
1124
- <input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
1125
- </td>
1126
- </tr>
1127
- </table>
1128
- <div style="clear: both"></div>
1129
- </div>
1130
- </div>
1131
- <div id="fv_flowplayer_skin_subtitles" class="postbox " >
1132
- <button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Subtitles</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Subtitles</span></h2>
1133
- <div class="inside">
1134
- <table class="form-table2 flowplayer-settings fv-player-interface-form-group">
1135
- <tr>
1136
- <td><label for="subtitle-font-face">Font Face</label></td>
1137
- <td>
1138
- <select id="subtitle-font-face" name="subtitleFontFace" data-fv-preview=".flowplayer .fp-subtitle .fp-subtitle-line { font-family: %val%!important; }">
1139
- <option value="inherit">(inherit)</option>
1140
- <option value="&quot;Courier New&quot;, Courier, monospace">Courier New</option>
1141
- <option value="Tahoma, Geneva, sans-serif">Tahoma, Geneva</option>
1142
- </select>
1143
- </td>
1144
- </tr>
1145
- <tr>
1146
- <td><label for="subtitleSize">Font Size</label></td>
1147
- <td><input id="subtitleSize" name="subtitleSize" title="Enter value in pixels" type="text" value="16"
1148
- data-fv-preview=".flowplayer .fp-subtitle .fp-subtitle-line { font-size: %val%px!important; }"/></td>
1149
- </tr>
1150
- <tr>
1151
- <td><label for="subtitleBgColor">Background Color</label></td>
1152
- <td><input class="color" id="subtitleBgColor" name="subtitleBgColor" type="text" value="#000000"
1153
- data-fv-preview=".flowplayer .fp-subtitle .fp-subtitle-line { background-color: rgba(%val%)!important; }"/></td>
1154
- </tr>
1155
- <tr>
1156
- <td><label for="subtitleBgAlpha">Background Opacity</label></td>
1157
- <td><input id="subtitleBgAlpha" name="subtitleBgAlpha" type="range" min="0" max="1" step="0.01" value="0.5"
1158
- data-fv-preview=""/></td>
1159
- </tr>
1160
- <tr>
1161
- <td colspan="2">
1162
- <input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
1163
- </td>
1164
- </tr>
1165
- </table>
1166
- <div id="fp-preview-wrapper">
1167
- <div class="flowplayer"id="preview">
1168
- <div class="fp-subtitle fp-active">
1169
- <span class="fp-subtitle-line">
1170
- The quick brown fox jumps over the lazy dog. </span>
1171
- </div>
1172
- </div>
1173
- </div>
1174
- <div style="clear: both"></div>
1175
- </div>
1176
- </div>
1177
- <div id="fv_flowplayer_skin_sticky" class="postbox " >
1178
- <button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Sticky Video</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Sticky Video</span></h2>
1179
- <div class="inside">
1180
- <p>This feature lets your viewers continue watching the video as they scroll past it. It applies to desktop computer displays - minimal width of 1020 pixels.</p>
1181
- <table class="form-table2 flowplayer-settings fv-player-interface-form-group">
1182
- <tr>
1183
- <td class="first"><label for="sticky_video">Enable:</label></td>
1184
- <td>
1185
- <p class="description">
1186
- <input type="hidden" name="sticky_video" value="false"/>
1187
- <input type="checkbox" name="sticky_video" id="sticky_video" value="true" />
1188
- </p>
1189
- </td>
1190
- </tr>
1191
- <tr>
1192
- <td><label for="sticky_place">Placement</label></td>
1193
- <td>
1194
- <select id="sticky_place" name="sticky_place">
1195
- <option value="right-bottom" selected="selected">Right, Bottom</option>
1196
- <option value="left-bottom">Left, Bottom</option>
1197
- <option value="left-top">Left, Top</option>
1198
- <option value="right-top">Right, Top</option>
1199
- </select>
1200
- </td>
1201
- </tr>
1202
- <tr>
1203
- <td><label for="sticky_width">Player width [px]</label></td>
1204
- <td><input id="sticky_width" name="sticky_width" title="Enter value in pixels" type="text" value="380"/></td>
1205
- </tr>
1206
-
1207
-
1208
- <tr>
1209
- <td colspan="2">
1210
- <input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
1211
- </td>
1212
- </tr>
1213
- </table>
1214
- <div style="clear: both"></div>
1215
- </div>
1216
- </div>
1217
- </div><input type="hidden" id="closedpostboxesnonce" name="closedpostboxesnonce" value="d28516cc79" /><input type="hidden" id="meta-box-order-nonce" name="meta-box-order-nonce" value="3edef551d9" />
1218
- </div>
1219
- <div id='postbox-container-tab_hosting' class='postbox-container' style="">
1220
- <div id="normal-sortables" class="meta-box-sortables"><div id="fv_flowplayer_description" class="postbox " >
1221
- <button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: </span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span> </span></h2>
1222
- <div class="inside">
1223
- <table class="form-table">
1224
- <tr>
1225
- <td colspan="4">
1226
- <p>
1227
- Here you can enable and configure advanced hosting options. </p>
1228
- </td>
1229
- </tr>
1230
- </table>
1231
- </div>
1232
- </div>
1233
- <div id="fv_flowplayer_amazon_options" class="postbox " >
1234
- <button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Amazon S3 Protected Content</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Amazon S3 Protected Content</span></h2>
1235
- <div class="inside">
1236
- <table class="form-table2">
1237
- <tr>
1238
- <td colspan="2">
1239
- <p>Secured Amazon S3 URLs are recommended for member-only sections of the site. We check the video length and make sure the link expiration time is big enough for the video to buffer properly.</p>
1240
- <p>If you use a cache plugin (such as Hyper Cache, WP Super Cache or W3 Total Cache), we recommend that you set the "Default Expiration Time" to twice as much as your cache timeout and check "Force the default expiration time". That way the video length won't be accounted and the video source URLs in your cached pages won't expire. Read more in the <a href="http://foliovision.com/wordpress/plugins/fv-wordpress-flowplayer/secure-amazon-s3-guide#wp-cache" target="_blank">Using Amazon S3 secure content in FV Flowplayer guide</a>.</p>
1241
- </td>
1242
- </tr>
1243
- <tr>
1244
- <td class="first"><label for="amazon_expire">Default Expiration Time [minutes] (<abbr title="Each video duration is stored on post save and then used as the expire time. If the duration is not available, this value is used.">?</abbr>):</label></td>
1245
- <td>
1246
- <input type="text" size="40" name="amazon_expire" id="amazon_expire" value="5" />
1247
- </td>
1248
- </tr>
1249
- <tr>
1250
- <td class="first"><label for="amazon_expire_force">Force the default expiration time:</label></td>
1251
- <td>
1252
- <p class="description">
1253
- <input type="hidden" name="amazon_expire_force" value="false"/>
1254
- <input type="checkbox" name="amazon_expire_force" id="amazon_expire_force" value="true" />
1255
- </p>
1256
- </td>
1257
- </tr>
1258
- <tr>
1259
- <td><label for="s3_browser">Amazon S3 Browser (beta):</label></td>
1260
- <td>
1261
- <p class="description">
1262
- <input type="hidden" name="s3_browser" value="false"/>
1263
- <input type="checkbox" name="s3_browser" id="s3_browser" value="true" />
1264
- Show Amazon S3 Browser in the "Add Video" dialog. </p>
1265
- </td>
1266
- </tr>
1267
-
1268
- <tr class="amazon-s3-first">
1269
- <td><label for="amazon_bucket[]">Amazon Bucket (<abbr title="We recommend that you simply put all of your protected video into a single bucket and enter its name here. All matching videos will use the protected URLs.">?</abbr>):</label></td>
1270
- <td><input id="amazon_bucket[]" name="amazon_bucket[]" type="text" value="" /></td>
1271
- </tr>
1272
- <tr class="amazon-s3-first">
1273
- <td><label for="amazon_region[]">Region</td>
1274
- <td>
1275
- <select id="amazon_region[]" name="amazon_region[]">
1276
- <option value="">Select the region</option>
1277
- <option value="us-east-1">US East (N. Virginia)</option>
1278
-
1279
- <option value="us-east-2">US East (Ohio)</option>
1280
-
1281
- <option value="us-west-1">US West (N. California)</option>
1282
-
1283
- <option value="us-west-2">US West (Oregon)</option>
1284
-
1285
- <option value="ca-central-1">Canada (Central)</option>
1286
-
1287
- <option value="ap-south-1">Asia Pacific (Mumbai)</option>
1288
-
1289
- <option value="ap-northeast-2">Asia Pacific (Seoul)</option>
1290
-
1291
- <option value="ap-southeast-1">Asia Pacific (Singapore)</option>
1292
-
1293
- <option value="ap-southeast-2">Asia Pacific (Sydney)</option>
1294
-
1295
- <option value="ap-northeast-1">Asia Pacific (Tokyo)</option>
1296
-
1297
- <option value="eu-central-1">EU (Frankfurt)</option>
1298
-
1299
- <option value="eu-west-1">EU (Ireland)</option>
1300
-
1301
- <option value="eu-west-2">EU (London)</option>
1302
-
1303
- <option value="sa-east-1">South America (S&atilde;o Paulo)</option>
1304
- </select>
1305
- </td>
1306
- </tr>
1307
- <tr class="amazon-s3-first">
1308
- <td><label for="amazon_key[]">Access Key ID:</label></td>
1309
- <td><input id="amazon_key[]" name="amazon_key[]" type="text" value="" /></td>
1310
- </tr>
1311
- <tr class="amazon-s3-first">
1312
- <td><label for="amazon_secret[]">Secret Access Key:</label></td>
1313
- <td><input id="amazon_secret[]" name="amazon_secret[]" type="text" value="" /></td>
1314
- </tr>
1315
- <tr class="amazon-s3-first">
1316
- <td colspan="2">
1317
- <div class="alignright fv_fp_amazon_remove">
1318
- <a href="#" onclick="fv_fp_amazon_s3_remove(this); return false">remove</a>
1319
- </div>
1320
- <div class="clear"></div>
1321
- <hr style="border: 0; border-top: 1px solid #ccc;" />
1322
- </td>
1323
- </tr>
1324
-
1325
- <tr class="amazon-s3-last"><td colspan="2"></td></tr>
1326
- <tr>
1327
- <td colspan="4">
1328
- <input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
1329
- <input type="button" id="amazon-s3-add" class="button" value="Add more Amazon S3 secure buckets" />
1330
- </td>
1331
- </tr>
1332
- </table>
1333
- </div>
1334
- </div>
1335
- </div><input type="hidden" id="closedpostboxesnonce" name="closedpostboxesnonce" value="d28516cc79" /><input type="hidden" id="meta-box-order-nonce" name="meta-box-order-nonce" value="3edef551d9" />
1336
- </div>
1337
- <div id='postbox-container-tab_actions' class='postbox-container' style="">
1338
- <div id="normal-sortables" class="meta-box-sortables"><div id="fv_flowplayer_description" class="postbox " >
1339
- <button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: </span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span> </span></h2>
1340
- <div class="inside">
1341
- <table class="form-table">
1342
- <tr>
1343
- <td colspan="4">
1344
- <p>
1345
- Here you can configure ads and banners that will be shown in the video. </p>
1346
- </td>
1347
- </tr>
1348
- </table>
1349
- </div>
1350
- </div>
1351
- <div id="fv_flowplayer_end_of_video" class="postbox " >
1352
- <button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: End of Video</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>End of Video</span></h2>
1353
- <div class="inside">
1354
- <table class="form-table2" style="margin: 5px; ">
1355
- <tr>
1356
- <td style="width:150px;vertical-align:top;line-height:2.4em;"><label for="popups_default">Default Popup:</label></td>
1357
- <td>
1358
-
1359
- <p class="description"> <select id="popups_default" name="popups_default">
1360
- <option selected value="no">None</option>
1361
- <option value="random">Random</option>
1362
- <option value="email-1">email-1 - Subscribe to list one</option> </select>
1363
- You can set a default popup here and then skip it for individual videos.</p>
1364
- </td>
1365
- </tr>
1366
- <tr>
1367
- <td colspan="4">
1368
- <input type="submit" name="fv-wp-flowplayer-submit" class="button-primary" value="Save All Changes" />
1369
- </td>
1370
- </tr>
1371
- </table>
1372
- </div>
1373
- </div>
1374
- <div id="fv_flowplayer_popups" class="postbox " >
1375
- <button type="button" class="handlediv" aria-expanded="true"><span class="screen-reader-text">Toggle panel: Custom Popups</span><span class="toggle-indicator" aria-hidden="true"></span></button><h2 class="hndle"><span>Custom Popups</span></h2>
1376
- <div class="inside">
1377
- <p>Add any popups here which you would like to use with multiple videos.</p>
1378
- <table class="form-table2" style="margin: 5px; ">
1379
- <tr>
1380
- <td>
1381
- <table id="fv-player-popups-settings">
1382
- <thead>
1383
- <tr>
1384
- <td>ID</td>
1385
- <td></td>
1386
- <td>Status</td>
1387
- </tr>
1388
- </thead>
1389
- <tbody>
1390
- <tr class='data' id="fv-player-popup-item-1">
1391
- <td class='id'>1</td>
1392
- <td>
1393
- <table class='fv-player-popup-formats'>
1394
- <tr>
1395
- <td><label>Name:</label></td>
1396
- <td><input type='text' maxlength="40" name='popups[1][name]' value='' placeholder='' /></td>
1397
- </tr>
1398
- <tr>
1399
- <td><label>HTML:</