PluginProbe
WDesignKit – AI Templates, Widget Builder & MCP Workflow / 2.4.0
WDesignKit – AI Templates, Widget Builder & MCP Workflow v2.4.0
2.6.6 2.6.5 2.6.4 2.6.3 2.6.2 2.6.1 2.6.0 2.5.5 2.5.4 2.5.3 2.5.2 2.5.1 2.5.0 2.4.0 2.3.3 2.3.2 2.3.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 All 128 releases
wdesignkit / includes / admin / class-wdkit-enqueue.php

class-wdkit-enqueue.php in WDesignKit – AI Templates, Widget Builder & MCP Workflow 2.4.0, at includes/admin/class-wdkit-enqueue.php

350 lines 12.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * This file specifically loads JavaScript and CSS dependencies.
4 *
5 * @link https://posimyth.com/
6 * @since 1.0.0
7 *
8 * @package Wdesignkit
9 */
10
11 namespace wdkit\WdKit_enqueue;
12
13 use wdkit\Wdkit_Wdesignkit;
14
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit; // Exit if accessed directly.
17 }
18
19 if ( ! class_exists( 'Wdkit_Enqueue' ) ) {
20
21 /**
22 * Here Enqueue all js and css script
23 */
24 class Wdkit_Enqueue {
25 /**
26 * Member Variable
27 *
28 * @var instance
29 */
30 private static $instance;
31
32 /**
33 * Member Variable
34 *
35 * @var staring wdkit_onbording_end
36 */
37 public $wdkit_onbording_end = 'wkit_onbording_end';
38
39 /**
40 * Initiator
41 */
42 public static function get_instance() {
43 if ( ! isset( self::$instance ) ) {
44 self::$instance = new self();
45 }
46 return self::$instance;
47 }
48
49 /**
50 * Initialize the class and set its properties.
51 *
52 * @since 1.0.0
53 */
54 public function __construct() {
55 add_action( 'admin_menu', array( $this, 'wdkit_admin_menu' ) );
56
57 add_action( 'admin_enqueue_scripts', array( $this, 'wdkit_enqueue_styles_library' ), 10 );
58
59 add_action( 'admin_enqueue_scripts', array( $this, 'wdkit_admin_scripts' ), 10, 1 );
60 add_action( 'enqueue_block_editor_assets', array( $this, 'wdkit_admin_scripts' ), 10, 1 );
61 add_action( 'enqueue_block_editor_assets', array( $this, 'wdkit_enqueue_styles' ), 10 );
62
63 // Gutenberg editor styles
64 add_action( 'enqueue_block_editor_assets', array( $this, 'wdkit_gutenberg_editor_style' ), 10 );
65
66 if ( class_exists( '\Elementor\Plugin' ) ) {
67 add_action( 'elementor/editor/before_enqueue_styles', array( $this, 'wdkit_elementor_editor_style' ) );
68 add_action( 'elementor/editor/after_enqueue_styles', array( $this, 'wdkit_elementor_hide_help_tab' ) );
69 add_action( 'elementor/preview/enqueue_styles', array( $this, 'wdkit_elementor_preview_style' ) );
70 add_action( 'elementor/editor/before_enqueue_scripts', array( $this, 'wdkit_elementor_scripts' ) );
71 }
72
73 // Bricks editor styles
74 add_action( 'wp_enqueue_scripts', array( $this, 'wdkit_bricks_editor_style' ), 10, 1 );
75 }
76
77
78 /**
79 * Enqueue the WDesignKit font library styles.
80 *
81 * This function loads the custom font styles for the WDesignKit plugin,
82 * including the icon font definitions and styling.
83 *
84 * @since 1.0.0
85 * @return void
86 */
87 public function wdkit_enqueue_styles_library() {
88 wp_enqueue_style( 'wdkit-library', WDKIT_URL . 'assets/fonts/style.css', array(), WDKIT_VERSION, false );
89 }
90
91 /**
92 * This function is used to retrieve all post types in WordPress and store them in an array.
93 *
94 * @since 1.0.0
95 */
96 public function wdkit_get_post_type_list() {
97 $args = array(
98 'public' => true,
99 'show_ui' => true,
100 );
101
102 $post_types = get_post_types( $args, 'objects' );
103 $options = array();
104 foreach ( $post_types as $post_type ) {
105 $exclude = array( 'attachment' );
106 if ( true === in_array( $post_type->name, $exclude, true ) ) {
107 continue;
108 }
109
110 if ( ! empty( $post_type->name ) && ( 'post' === $post_type->name || 'page' === $post_type->name || 'elementor_library' === $post_type->name || 'nxt_builder' === $post_type->name ) ) {
111 $options[ $post_type->name ] = $post_type->label;
112 }
113 }
114
115 return $options;
116 }
117
118 /**
119 * Get Editor Use.
120 *
121 * @since 1.0.0
122 */
123 protected function wdkit_use_editor() {
124 global $current_screen;
125
126 $editor = 'wdkit';
127
128 $action = ! empty( $_GET['action'] ) ? sanitize_key( wp_unslash( $_GET['action'] ) ) : '';
129
130 if ( $current_screen && $current_screen->is_block_editor() ) {
131
132 if ( array_key_exists( 'action', $_GET ) && isset( $action ) ) {
133 if ( 'elementor' === $action ) {
134 $editor = 'elementor';
135 } elseif ( 'edit' === $action ) {
136 $editor = 'gutenberg';
137 }
138 } else {
139 $editor = 'gutenberg';
140 }
141 } elseif ( 'elementor' === $action ) {
142 $editor = 'elementor';
143 }
144
145 return $editor;
146 }
147
148 /**
149 * Load Admin Scripts.
150 *
151 * @since 1.0.0
152 */
153 public function wdkit_elementor_scripts() {
154 $this->wdkit_admin_scripts( 'elementor' );
155 }
156
157 /**
158 * Elementor Editor Panel Style Loaded
159 */
160 public function wdkit_elementor_editor_style() {
161 wp_enqueue_style( 'wdkit-elementor-editor-css', WDKIT_URL . 'assets/css/elementor/wdkit_enqueue_editor_styles.css', array(), WDKIT_VERSION );
162
163 // Hide WDesignKit logo icon when white label is enabled
164 $white_label = get_option( 'wkit_white_label', false );
165 if ( ! empty( $white_label['help_link'] ) ) {
166 wp_add_inline_style( 'wdkit-elementor-editor-css', '.elementor-element .icon i.tpae-wdkit-logo:after { display: none !important; }' );
167 }
168 }
169
170 /**
171 * Bricks Editor Panel Style Loaded
172 */
173 public function wdkit_bricks_editor_style() {
174 // Only load in Bricks editor
175 if ( function_exists( 'bricks_is_builder' ) && bricks_is_builder() ) {
176 wp_enqueue_style( 'wdkit-bricks-editor-css', WDKIT_URL . 'assets/css/bricks/wdkit_enqueue_editor_styles.css', array(), WDKIT_VERSION );
177
178 // Hide WDesignKit logo icon when white label is enabled
179 $white_label = get_option( 'wkit_white_label', false );
180 if ( ! empty( $white_label['help_link'] ) ) {
181 wp_add_inline_style( 'wdkit-bricks-editor-css', '.element-data .element-icon i.tpae-wdkit-logo:after { display: none !important; } .bricks-panel-controls .control-group[data-control-group*="Need"]{display:none!important;}' );
182 }
183 }
184 }
185
186 /**
187 * Gutenberg Editor Panel Style Loaded
188 */
189 public function wdkit_gutenberg_editor_style() {
190 wp_enqueue_style( 'wdkit-gutenberg-editor-css', WDKIT_URL . 'assets/css/gutenberg/wdkit_enqueue_editor_styles.css', array(), WDKIT_VERSION );
191
192 // Hide WDesignKit logo icon + Need Help panel when white label is enabled
193 $white_label = get_option( 'wkit_white_label', false );
194 if ( ! empty( $white_label['help_link'] ) ) {
195 wp_add_inline_style( 'wdkit-gutenberg-editor-css', '.block-editor-block-types-list__list-item .block-editor-block-icon i.tpae-wdkit-logo:after, .tpgb-head-panel-tabs .components-panel__body.wdkit-panel-need-help { display: none !important; }' );
196 }
197 }
198
199 /**
200 * Elementor Preview Style Loaded
201 *
202 * @since 1.0.0
203 */
204 public function wdkit_elementor_preview_style() {
205 wp_enqueue_style( 'wdkit-elementor-editor-css', WDKIT_URL . 'assets/css/elementor/wdkit_enqueue_preview_styles.css', array(), WDKIT_VERSION );
206 }
207
208 /**
209 * Enqueue Scripts admin area.
210 *
211 * @since 1.0.0
212 *
213 * @param string $hook use for check page type.
214 */
215 public function wdkit_admin_scripts( $hook ) {
216
217 wp_enqueue_style( 'wdkit-library-preview', WDKIT_URL . 'assets/fonts/style.css', array(), WDKIT_VERSION, false );
218 wp_enqueue_style( 'wdkit-out-dashborad', WDKIT_URL . 'assets/css/dashborad/wdkit-dashborad.css', array(), WDKIT_VERSION, false );
219
220 $page = isset( $_GET['page'] ) ? sanitize_key( wp_unslash( $_GET['page'] ) ) : '';
221 $ptype = isset( $_GET['post_type'] ) ? sanitize_key( wp_unslash( $_GET['post_type'] ) ) : '';
222
223 // Check if we're on a Nexter Extension page
224 $is_nexter_page = isset( $_GET['page'] ) && sanitize_key( wp_unslash( $_GET['page'] ) ) === 'nxt_code_snippets';
225
226 // Check if we're on a Theme Builder page (via post_type or page parameter)
227 $is_theme_builder_page = ( isset( $_GET['post_type'] ) && sanitize_key( wp_unslash( $_GET['post_type'] ) ) === 'nxt_builder' ) || ( isset( $_GET['page'] ) && sanitize_key( wp_unslash( $_GET['page'] ) ) === 'nxt_builder' );
228
229 if ( ! in_array( $hook, array( 'toplevel_page_wdesign-kit', 'elementor', 'post-new.php', 'post.php' ), true ) && !$is_nexter_page && !$is_theme_builder_page ) {
230 return;
231 }
232
233 wp_enqueue_media();
234
235 $this->wdkit_enqueue_scripts( $hook );
236 $this->wdkit_enqueue_styles();
237 }
238
239 /**
240 * Enqueue Styles admin area.
241 *
242 * @since 1.0.0
243 */
244 public function wdkit_enqueue_styles() {
245 wp_enqueue_style( 'wdkit-editor-css', WDKIT_URL . 'build/index.css', array(), WDKIT_VERSION );
246 }
247
248 /**
249 * Register the JavaScript for the admin area.
250 *
251 * @param string $hook give builder name.
252 * @since 1.0.0
253 */
254 public function wdkit_enqueue_scripts( $hook ) {
255 $asset_file = WDKIT_PATH . 'build/index.asset.php';
256 $asset = file_exists( $asset_file ) ? require $asset_file : array( 'dependencies' => array( 'wp-i18n', 'wp-element', 'wp-components' ), 'version' => WDKIT_VERSION );
257 wp_enqueue_script( 'wdkit-editor-js', WDKIT_URL . 'build/index.js', $asset['dependencies'], $asset['version'], true );
258 wp_set_script_translations( 'wdkit-editor-js', 'wdesignkit' );
259
260 $onbording_end = get_option( $this->wdkit_onbording_end );
261 $white_label = get_option( 'wkit_white_label', false );
262 $dark_mode = get_option( 'wdkit_dark_mode', 'light' );
263
264 wp_localize_script(
265 'wdkit-editor-js',
266 'wdkitData',
267 array(
268 'ajax_url' => admin_url( 'admin-ajax.php' ),
269 'WDKIT_URL' => WDKIT_URL,
270 'WDKIT_ASSETS' => WDKIT_ASSETS,
271 'wdkit_server_url' => WDKIT_SERVER_SITE_URL,
272 'wdkit_site_api_url' => WDKIT_SERVER_API_URL,
273 'wdkit_wp_version' => get_bloginfo( 'version' ),
274 'home_url' => esc_url( home_url( '/' ) ),
275 'kit_nonce' => wp_create_nonce( 'wdkit_nonce' ),
276 'post_id' => get_the_ID(),
277 'post_type' => get_post_type(),
278 'text_domain' => WDKIT_TEXT_DOMAIN,
279 'use_editor' => $this->wdkit_use_editor(),
280 'post_type_list' => $this->wdkit_get_post_type_list(),
281 'WDKIT_onbording_end' => $onbording_end,
282 'wdkit_white_label' => $white_label,
283 'WDKIT_dark_mode' => $dark_mode,
284 /** Widget Builder — public URL only, no server filesystem paths */
285 'WDKIT_SITE_URL' => WDKIT_GET_SITE_URL,
286 'WDKIT_DOC_URL' => WDKIT_DOCUMENT,
287 'WDKIT_SERVER_PATH' => WDKIT_SERVER_PATH,
288 'WDKIT_VERSION' => WDKIT_VERSION,
289
290 'gutenberg_template' => Wdkit_Wdesignkit::wdkit_is_compatible( 'gutenberg_template', 'template' )
291 )
292 );
293
294 /**Ace Editor files for Widget-builder */
295 if ( 'toplevel_page_wdesign-kit' === $hook && Wdkit_Wdesignkit::wdkit_is_compatible( 'builder', 'widget' ) ) {
296 wp_enqueue_script( 'widgetBuilder-script-editor-js', WDKIT_URL . 'assets/js/extra/ace.min.js', array( 'wp-element' ), WDKIT_VERSION, true );
297 wp_enqueue_script( 'widgetBuilder-script-editor-cobalt', WDKIT_URL . 'assets/js/extra/theme-cobalt.js', array( 'wp-element' ), WDKIT_VERSION, true );
298 wp_enqueue_script( 'widgetBuilder-script-editor-html', WDKIT_URL . 'assets/js/extra/mode-html.js', array( 'wp-element' ), WDKIT_VERSION, true );
299 }
300
301 if ( 'elementor' === $hook && Wdkit_Wdesignkit::wdkit_is_compatible( 'elementor_template', 'template' ) ) {
302 wp_enqueue_script( 'wdkit-frontend-editor', WDKIT_ASSETS . '/js/main/elementor/elementor-editor.js', array( 'jquery', 'wp-i18n' ), WDKIT_VERSION, true );
303 }
304 }
305
306 /**
307 * Add Menu Page WdKit.
308 *
309 * @since 1.0.0
310 */
311 public function wdkit_admin_menu() {
312 $capability = 'manage_options';
313
314 $options = get_option( 'wkit_white_label' );
315 $setting_name = ! empty( $options['plugin_name'] ) ? $options['plugin_name'] : __( 'WDesignKit', 'wdesignkit' );
316 $setting_logo = ! empty( $options['plugin_logo'] ) ? $options['plugin_logo'] : WDKIT_ASSETS . 'images/svg/logo-icon.svg';
317
318 if ( current_user_can( $capability ) ) {
319 $hook = add_menu_page( $setting_name, $setting_name, 'manage_options', 'wdesign-kit', array( $this, 'wdkit_menu_page_template' ), $setting_logo, 67 );
320 }
321 }
322
323 /**
324 * Load wdkit page content.
325 *
326 * @since 1.0.0
327 */
328 public function wdkit_menu_page_template() {
329 echo '<div id="wdesignkit-app"></div>';
330 }
331
332 /**
333 * Hide "Need Help" tab in Elementor widgets section when white label is enabled
334 *
335 * @since 2.2.4
336 */
337 public function wdkit_elementor_hide_help_tab() {
338 $white_label = get_option( 'wkit_white_label', false );
339
340 if ( ! empty( $white_label['help_link'] ) ) {
341 wp_add_inline_style(
342 'elementor-editor',
343 '.elementor-control.elementor-control-Need.Help.elementor-control-type-section{display:none!important;}'
344 );
345 }
346 }
347 }
348
349 Wdkit_Enqueue::get_instance();
350 }