PluginProbe
WDesignKit – AI Templates, Widget Builder & MCP Workflow / 2.3.1
WDesignKit – AI Templates, Widget Builder & MCP Workflow v2.3.1
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.3.1, at includes/admin/class-wdkit-enqueue.php

347 lines 11.5 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'] ) ? $_GET['action'] : '';
129
130 if ( $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 // Check if we're on a Nexter Extension page
221 $is_nexter_page = isset( $_GET['page'] ) && $_GET['page'] === 'nxt_code_snippets';
222
223 // Check if we're on a Theme Builder page (via post_type or page parameter)
224 $is_theme_builder_page = ( isset( $_GET['post_type'] ) && $_GET['post_type'] === 'nxt_builder' ) || ( isset( $_GET['page'] ) && $_GET['page'] === 'nxt_builder' );
225
226 if ( ! in_array( $hook, array( 'toplevel_page_wdesign-kit', 'elementor', 'post-new.php', 'post.php' ), true ) && !$is_nexter_page && !$is_theme_builder_page ) {
227 return;
228 }
229
230 wp_enqueue_media();
231
232 $this->wdkit_enqueue_scripts( $hook );
233 $this->wdkit_enqueue_styles();
234 }
235
236 /**
237 * Enqueue Styles admin area.
238 *
239 * @since 1.0.0
240 */
241 public function wdkit_enqueue_styles() {
242 wp_enqueue_style( 'wdkit-editor-css', WDKIT_URL . 'build/index.css', array(), WDKIT_VERSION );
243 }
244
245 /**
246 * Register the JavaScript for the admin area.
247 *
248 * @param string $hook give builder name.
249 * @since 1.0.0
250 */
251 public function wdkit_enqueue_scripts( $hook ) {
252 wp_enqueue_script( 'wdkit-editor-js', WDKIT_URL . 'build/index.js', array( 'wp-i18n', 'wp-element', 'wp-components' ), WDKIT_VERSION, true );
253 wp_set_script_translations( 'wdkit-editor-js', 'wdesignkit' );
254
255 $onbording_end = get_option( $this->wdkit_onbording_end );
256 $white_label = get_option( 'wkit_white_label', false );
257 $dark_mode = get_option( 'wdkit_dark_mode', 'light' );
258
259 wp_localize_script(
260 'wdkit-editor-js',
261 'wdkitData',
262 array(
263 'ajax_url' => admin_url( 'admin-ajax.php' ),
264 'WDKIT_PATH' => WDKIT_PATH,
265 'WDKIT_URL' => WDKIT_URL,
266 'WDKIT_ASSETS' => WDKIT_ASSETS,
267 'wdkit_server_url' => WDKIT_SERVER_SITE_URL,
268 'wdkit_site_api_url' => WDKIT_SERVER_API_URL,
269 'wdkit_wp_version' => get_bloginfo( 'version' ),
270 'home_url' => esc_url( home_url( '/' ) ),
271 'kit_nonce' => wp_create_nonce( 'wdkit_nonce' ),
272 'post_id' => get_the_ID(),
273 'post_type' => get_post_type(),
274 'text_domain' => WDKIT_TEXT_DOMAIN,
275 'use_editor' => $this->wdkit_use_editor(),
276 'post_type_list' => $this->wdkit_get_post_type_list(),
277 'WDKIT_onbording_end' => $onbording_end,
278 'wdkit_white_label' => $white_label,
279 'WDKIT_dark_mode' => $dark_mode,
280 /** Widget Builder Path */
281 'WDKIT_SITE_URL' => WDKIT_GET_SITE_URL,
282 'WDKIT_DOC_URL' => WDKIT_DOCUMENT,
283 'WDKIT_SERVER_PATH' => WDKIT_SERVER_PATH,
284 'WDKIT_BUILDER_PATH' => WDKIT_BUILDER_PATH,
285 'WDKIT_VERSION' => WDKIT_VERSION,
286
287 'gutenberg_template' => Wdkit_Wdesignkit::wdkit_is_compatible( 'gutenberg_template', 'template' )
288 )
289 );
290
291 /**Ace Editor files for Widget-builder */
292 if ( 'toplevel_page_wdesign-kit' === $hook && Wdkit_Wdesignkit::wdkit_is_compatible( 'builder', 'widget' ) ) {
293 wp_enqueue_script( 'widgetBuilder-script-editor-js', WDKIT_URL . 'assets/js/extra/ace.min.js', array( 'wp-element' ), WDKIT_VERSION, true );
294 wp_enqueue_script( 'widgetBuilder-script-editor-cobalt', WDKIT_URL . 'assets/js/extra/theme-cobalt.js', array( 'wp-element' ), WDKIT_VERSION, true );
295 wp_enqueue_script( 'widgetBuilder-script-editor-html', WDKIT_URL . 'assets/js/extra//mode-html.js', array( 'wp-element' ), WDKIT_VERSION, true );
296 }
297
298 if ( 'elementor' === $hook && Wdkit_Wdesignkit::wdkit_is_compatible( 'elementor_template', 'template' ) ) {
299 wp_enqueue_script( 'wdkit-frontend-editor', WDKIT_ASSETS . '/js/main/elementor/elementor-editor.js', array( 'jquery', 'wp-i18n' ), WDKIT_VERSION, true );
300 }
301 }
302
303 /**
304 * Add Menu Page WdKit.
305 *
306 * @since 1.0.0
307 */
308 public function wdkit_admin_menu() {
309 $capability = 'manage_options';
310
311 $options = get_option( 'wkit_white_label' );
312 $setting_name = ! empty( $options['plugin_name'] ) ? $options['plugin_name'] : __( 'WDesignKit', 'wdesignkit' );
313 $setting_logo = ! empty( $options['plugin_logo'] ) ? $options['plugin_logo'] : WDKIT_ASSETS . 'images/svg/logo-icon.svg';
314
315 if ( current_user_can( $capability ) ) {
316 $hook = add_menu_page( $setting_name, $setting_name, 'manage_options', 'wdesign-kit', array( $this, 'wdkit_menu_page_template' ), $setting_logo, 67 );
317 }
318 }
319
320 /**
321 * Load wdkit page content.
322 *
323 * @since 1.0.0
324 */
325 public function wdkit_menu_page_template() {
326 echo '<div id="wdesignkit-app"></div>';
327 }
328
329 /**
330 * Hide "Need Help" tab in Elementor widgets section when white label is enabled
331 *
332 * @since 2.2.4
333 */
334 public function wdkit_elementor_hide_help_tab() {
335 $white_label = get_option( 'wkit_white_label', false );
336
337 if ( ! empty( $white_label['help_link'] ) ) {
338 wp_add_inline_style(
339 'elementor-editor',
340 '.elementor-control.elementor-control-Need.Help.elementor-control-type-section{display:none!important;}'
341 );
342 }
343 }
344 }
345
346 Wdkit_Enqueue::get_instance();
347 }