PluginProbe
FV Player 8 / trunk
FV Player 8 vtrunk
trunk 8.0.18 8.0.19 8.0.20 8.0.21 8.0.25 8.0.27 8.1 8.1.3
fv-player / controller / elementor.php

elementor.php in FV Player 8 trunk, at controller/elementor.php

122 lines 4.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Elementor support
5 */
6
7 // Load assets for the editor
8 add_action( 'elementor/editor/wp_head', 'fv_player_shortcode_editor_scripts_enqueue' );
9 add_action( 'elementor/editor/wp_head', 'fv_wp_flowplayer_edit_form_after_editor' );
10 add_action( 'elementor/editor/wp_head', 'flowplayer_prepare_scripts' );
11
12 /**
13 * Register the Elementor widget
14 */
15 add_action( 'elementor/widgets/register', 'fv_player_elementor_register_widgets' );
16
17 function fv_player_elementor_register_widgets( $widgets_manager ) {
18
19 include_once( __DIR__ . '/../models/elementor-widget.php' );
20
21 $widgets_manager->register( new FV_Player_Elementor_Widget() );
22 }
23
24 // Register the FV Player Elementor widget scripts
25 add_action( 'wp_enqueue_scripts', 'fv_player_elementor_register_scripts' );
26
27 function fv_player_elementor_register_scripts() {
28
29 // We do not use script ID like fv-player-... as otherwise it would be loaded for front-end automatically.
30 wp_register_script(
31 'elementor-fv-player-widget',
32 plugins_url( 'js/fv-player-elementor-widget.js', dirname( __FILE__ ) ),
33 array( 'jquery' ),
34 filemtime( dirname( __FILE__ ) . '/../js/fv-player-elementor-widget.js' )
35 );
36
37 wp_localize_script(
38 'elementor-fv-player-widget',
39 'elementor_fv_player_widget',
40 array(
41 'ajaxurl' => admin_url( 'admin-ajax.php' ),
42 'nonce' => wp_create_nonce( 'fv_player_gutenberg' ),
43 )
44 );
45 }
46
47 // Remove the FV Player Elementor Widget settings which we store in FV Player DB
48 add_filter( 'elementor/document/save/data', 'fv_player_editor_elementor_widget_remove_settings' );
49
50 function fv_player_editor_elementor_widget_remove_settings( $data ) {
51
52 if ( isset( $data['elements'] ) ) {
53 foreach( $data['elements'] as $k => $e ) {
54
55 // Handle nested elements
56 if ( is_array( $e['elements'] ) ) {
57 $data['elements'][ $k ] = fv_player_editor_elementor_widget_remove_settings( $e );
58 }
59
60 // Remove FV Player Elementor Widget settings (fields) which should not be stored
61 if ( ! empty( $e['widgetType'] ) && $e['widgetType'] === 'fv_player' ) {
62 unset( $data['elements'][ $k ]['settings']['source_url'] );
63 unset( $data['elements'][ $k ]['settings']['splash_url'] );
64 unset( $data['elements'][ $k ]['settings']['splash_attachment_id'] );
65 unset( $data['elements'][ $k ]['settings']['title'] );
66
67 unset( $data['elements'][ $k ]['settings']['_show_timeline_previews'] );
68 unset( $data['elements'][ $k ]['settings']['timeline_previews'] );
69
70 unset( $data['elements'][ $k ]['settings']['_show_hls_key'] );
71 unset( $data['elements'][ $k ]['settings']['hls_hlskey'] );
72 }
73 }
74 }
75
76 return $data;
77 }
78
79 // Replace the old FV Player Widget with the new FV Player Elementor Widget in the Elementor editor.
80 add_filter( 'elementor/editor/localize_settings', 'fv_player_elementor_editor_localize_settings' );
81
82 function fv_player_elementor_editor_localize_settings( $settings ) {
83 $settings['initial_document'] = fv_player_elementor_editor_localize_settings_replace( $settings['initial_document'] );
84 return $settings;
85 }
86
87 function fv_player_elementor_editor_localize_settings_replace( $data ) {
88
89 if ( isset( $data['elements'] ) ) {
90 foreach( $data['elements'] as $k => $e ) {
91
92 // Handle nested elements
93 if ( is_array( $e['elements'] ) ) {
94 $data['elements'][ $k ] = fv_player_elementor_editor_localize_settings_replace( $e );
95 }
96
97 // Remove FV Player Elementor Widget settings (fields) which should not be stored
98 if ( ! empty( $e['widgetType'] ) && $e['widgetType'] === 'wp-widget-widget_fvplayer' ) {
99 $data['elements'][ $k ]['widgetType'] = 'fv_player';
100 $data['elements'][ $k ]['settings'] = array( 'shortcode' => $e['settings']['wp']['text'] );
101 }
102 }
103 }
104
105 return $data;
106 }
107
108 // If user has the FV Player Widget in their favorites, replace it with the new FV Player Elementor Widget.
109 add_filter( 'get_user_option_elementor_editor_user_favorites', 'fv_player_elementor_editor_user_favorites' );
110
111 function fv_player_elementor_editor_user_favorites( $favorites ) {
112
113 if ( ! empty( $favorites['widgets'] ) && is_array( $favorites['widgets'] ) ) {
114 foreach ( $favorites['widgets'] as $key => $widget ) {
115 if ( 'wp-widget-widget_fvplayer' === $widget ) {
116 $favorites['widgets'][ $key ] = 'fv_player';
117 }
118 }
119 }
120
121 return $favorites;
122 }