PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 2.0.8
Tutor LMS – eLearning and online course solution v2.0.8
3.9.14 3.9.13 3.9.12 3.9.11 trunk 1.0.0 1.0.0-alpha 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.2.0 1.2.1 1.2.11 1.2.12 1.2.13 1.2.20 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.15 1.9.16 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.3.0 2.4.0 2.5.0 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.1.0 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.8.0 3.8.1 3.8.2 3.8.3 3.9.0 3.9.1 3.9.10 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9
tutor / classes / Assets.php
tutor / classes Last commit date
Addons.php 4 years ago Admin.php 4 years ago Ajax.php 4 years ago Announcements.php 4 years ago Assets.php 3 years ago Backend_Page_Trait.php 4 years ago Course.php 3 years ago Course_Filter.php 4 years ago Course_List.php 3 years ago Course_Settings_Tabs.php 4 years ago Course_Widget.php 4 years ago Custom_Validation.php 4 years ago Dashboard.php 3 years ago FormHandler.php 4 years ago Frontend.php 3 years ago Gutenberg.php 4 years ago Input.php 3 years ago Instructor.php 4 years ago Instructors_List.php 3 years ago Lesson.php 4 years ago Options_V2.php 3 years ago Post_types.php 4 years ago Private_Course_Access.php 4 years ago Q_and_A.php 4 years ago Question_Answers_List.php 4 years ago Quiz.php 4 years ago Quiz_Attempts_List.php 4 years ago RestAPI.php 4 years ago Reviews.php 4 years ago Rewrite_Rules.php 4 years ago Shortcode.php 4 years ago Student.php 4 years ago Students_List.php 4 years ago Taxonomies.php 4 years ago Template.php 3 years ago Theme_Compatibility.php 5 years ago Tools.php 3 years ago Tools_V2.php 4 years ago Tutor.php 3 years ago TutorEDD.php 4 years ago Tutor_Base.php 5 years ago Tutor_List_Table.php 4 years ago Tutor_Setup.php 4 years ago Upgrader.php 4 years ago User.php 4 years ago Utils.php 3 years ago Video_Stream.php 4 years ago Withdraw.php 3 years ago Withdraw_Requests_List.php 4 years ago WooCommerce.php 3 years ago
Assets.php
532 lines
1 <?php
2
3 namespace TUTOR;
4
5 if ( ! defined( 'ABSPATH' ) ) {
6 exit;
7 }
8
9 class Assets {
10
11 public function __construct() {
12 /**
13 * Common scripts loading
14 */
15 add_action( 'admin_enqueue_scripts', array( $this, 'common_scripts' ) );
16 add_action( 'wp_enqueue_scripts', array( $this, 'common_scripts' ) );
17 /**
18 * Front and backend script enqueue
19 */
20 add_action( 'admin_enqueue_scripts', array( $this, 'admin_scripts' ) );
21 add_action( 'wp_enqueue_scripts', array( $this, 'frontend_scripts' ) );
22
23 add_action( 'admin_enqueue_scripts', array( $this, 'load_meta_data' ) );
24 add_action( 'wp_enqueue_scripts', array( $this, 'load_meta_data' ) );
25
26 /**
27 * Text domain loading
28 */
29 add_action( 'admin_enqueue_scripts', array( $this, 'tutor_script_text_domain' ), 100 );
30 add_action( 'wp_enqueue_scripts', array( $this, 'tutor_script_text_domain' ), 100 );
31 add_filter( 'tutor_localize_data', array( $this, 'modify_localize_data' ) );
32
33 /**
34 * register translatable function to load
35 * handled script with text domain attached to
36 *
37 * @since 1.9.0
38 */
39 add_action( 'admin_head', array( $this, 'tutor_add_mce_button' ) );
40 add_filter( 'get_the_generator_html', array( $this, 'tutor_generator_tag' ), 10, 2 );
41 add_filter( 'get_the_generator_xhtml', array( $this, 'tutor_generator_tag' ), 10, 2 );
42
43 /**
44 * Add translation support for external tinyMCE button
45 *
46 * @since 1.9.7
47 */
48 add_filter( 'mce_external_languages', array( $this, 'tutor_tinymce_translate' ) );
49
50 /**
51 * Identifier class to body tag
52 *
53 * @since v1.9.9
54 */
55 add_filter( 'body_class', array( $this, 'add_identifier_class_to_body' ) );
56 add_filter( 'admin_body_class', array( $this, 'add_identifier_class_to_body' ) );
57
58 /**
59 * Add edit with front end builder button on Gutenberg editor
60 *
61 * @since v2.0.5
62 */
63 add_action( 'enqueue_block_editor_assets', __CLASS__ . '::add_frontend_editor_button' );
64 }
65
66 private function get_default_localized_data() {
67 global $wp_version, $wp_query;
68
69 $home_url = get_home_url();
70 $parsed = parse_url( $home_url );
71
72 $base_path = ( is_array( $parsed ) && isset( $parsed['path'] ) ) ? $parsed['path'] : '/';
73 $base_path = rtrim( $base_path, '/' ) . '/';
74
75 $post_id = get_the_ID();
76 $post_type = get_post_type( $post_id );
77
78 $query_vars = $wp_query->query_vars;
79 if ( is_admin() && isset( $_GET['page'] ) ) {
80 $current_page = $_GET['page'];
81 } else {
82 $current_page = isset( $query_vars['tutor_dashboard_page'] ) ? $query_vars['tutor_dashboard_page'] : '';
83 }
84 return array(
85 'ajaxurl' => admin_url( 'admin-ajax.php' ),
86 'home_url' => get_home_url(),
87 'site_title' => get_bloginfo( 'title' ),
88 'base_path' => tutor()->basepath,
89 'tutor_url' => tutor()->url,
90 'tutor_pro_url' => function_exists( 'tutor_pro' ) ? tutor_pro()->url : null,
91 'nonce_key' => tutor()->nonce,
92 tutor()->nonce => wp_create_nonce( tutor()->nonce_action ),
93 'loading_icon_url' => get_admin_url() . 'images/wpspin_light.gif',
94 'placeholder_img_src' => tutor_placeholder_img_src(),
95 'enable_lesson_classic_editor' => get_tutor_option( 'enable_lesson_classic_editor' ),
96 'tutor_frontend_dashboard_url' => tutor_utils()->get_tutor_dashboard_page_permalink(),
97 'wp_date_format' => tutor_js_date_format_against_wp(),
98 'is_admin' => is_admin(),
99 'is_admin_bar_showing' => is_admin_bar_showing(),
100 'addons_data' => tutor_utils()->prepare_free_addons_data(),
101 'current_user' => wp_get_current_user(),
102 'content_change_event' => 'tutor_content_changed_event',
103 'is_tutor_course_edit' => isset( $_GET['action'] ) && 'edit' === $_GET['action'] && tutor()->course_post_type === get_post_type( get_the_ID() ) ? true : false,
104 'assignment_max_file_allowed' => 'tutor_assignments' === $post_type ? (int) tutor_utils()->get_assignment_option( $post_id, 'upload_files_limit' ) : 0,
105 'current_page' => $current_page,
106 );
107 }
108
109 public function admin_scripts() {
110 wp_enqueue_style( 'tutor-select2', tutor()->url . 'assets/packages/select2/select2.min.css', array(), TUTOR_VERSION );
111 wp_enqueue_style( 'tutor-admin', tutor()->url . 'assets/css/tutor-admin.min.css', array(), TUTOR_VERSION );
112 /**
113 * Scripts
114 */
115 wp_enqueue_media();
116
117 wp_enqueue_script( 'wp-color-picker' );
118 wp_enqueue_style( 'wp-color-picker' );
119
120 wp_enqueue_script( 'jquery-ui-slider' );
121 wp_enqueue_script( 'jquery-ui-datepicker' );
122
123 wp_enqueue_script( 'tutor-select2', tutor()->url . 'assets/packages/select2/select2.full.min.js', array( 'jquery' ), TUTOR_VERSION, true );
124 wp_enqueue_script( 'tutor-admin', tutor()->url . 'assets/js/tutor-admin.min.js', array( 'jquery', 'wp-color-picker', 'wp-i18n' ), TUTOR_VERSION, true );
125 }
126
127 /**
128 * Load frontend scripts
129 */
130 public function frontend_scripts() {
131 global $post, $wp_query;
132
133 /**
134 * We checked wp_enqueue_editor() in condition because it conflicting with Divi Builder
135 * condition updated @since v.1.7.4
136 */
137
138 if ( is_single() ) {
139 if ( function_exists( 'et_pb_is_pagebuilder_used' ) ) {
140 $is_page_builder_used = et_pb_is_pagebuilder_used( get_the_ID() );
141 if ( ! $is_page_builder_used ) {
142 wp_enqueue_editor();
143 }
144 } else {
145 wp_enqueue_editor();
146 }
147 }
148
149 /**
150 * Initializing quicktags script to use in wp_editor();
151 */
152 wp_enqueue_script( 'quicktags' );
153
154 $tutor_dashboard_page_id = (int) tutor_utils()->get_option( 'tutor_dashboard_page_id' );
155 if ( $tutor_dashboard_page_id === get_the_ID() ) {
156 wp_enqueue_media();
157 }
158
159 /**
160 * Enabling Sorting, draggable, droppable...
161 */
162 wp_enqueue_script( 'jquery-ui-sortable' );
163 wp_enqueue_script( 'jquery-touch-punch', array( 'jquery-ui-sortable' ) );
164
165 // Plyr
166 if ( is_single_course( true ) ) {
167 wp_enqueue_style( 'tutor-plyr', tutor()->url . 'assets/packages/plyr/plyr.css', array(), TUTOR_VERSION );
168 wp_enqueue_script( 'tutor-plyr', tutor()->url . 'assets/packages/plyr/plyr.polyfilled.min.js', array( 'jquery' ), TUTOR_VERSION, true );
169 }
170
171 // Social Share
172 wp_enqueue_script( 'tutor-social-share', tutor()->url . 'assets/packages/SocialShare/SocialShare.min.js', array( 'jquery' ), TUTOR_VERSION, true );
173
174 /**
175 * Chart Data
176 */
177 if ( ! empty( $wp_query->query_vars['tutor_dashboard_page'] ) ) {
178 wp_enqueue_script( 'jquery-ui-slider' );
179
180 wp_enqueue_style( 'tutor-select2', tutor()->url . 'assets/packages/select2/select2.min.css', array(), TUTOR_VERSION );
181 wp_enqueue_script( 'tutor-select2', tutor()->url . 'assets/packages/select2/select2.full.min.js', array( 'jquery' ), TUTOR_VERSION, true );
182
183 if ( $wp_query->query_vars['tutor_dashboard_page'] === 'earning' ) {
184 wp_enqueue_script( 'tutor-front-chart-js', tutor()->url . 'assets/js/lib/Chart.bundle.min.js', array(), TUTOR_VERSION );
185 wp_enqueue_script( 'jquery-ui-datepicker' );
186 }
187 }
188 /**
189 * dependency wp-i18n added for
190 * translate js file
191 *
192 * @since 1.9.0
193 */
194 wp_enqueue_style( 'tutor-frontend', tutor()->url . 'assets/css/tutor-front.min.css', array(), TUTOR_VERSION );
195 wp_enqueue_script( 'tutor-frontend', tutor()->url . 'assets/js/tutor-front.min.js', array( 'jquery', 'wp-i18n' ), TUTOR_VERSION, true );
196
197 /**
198 * Load frontend dashboard style
199 *
200 * @since v1.9.8
201 */
202 if ( tutor_utils()->is_tutor_frontend_dashboard() ) {
203 wp_enqueue_style( 'tutor-frontend-dashboard-css', tutor()->url . 'assets/css/tutor-frontend-dashboard.min.css', TUTOR_VERSION );
204 }
205
206 // Load date picker for announcement at frontend
207 wp_enqueue_script( 'jquery-ui-datepicker' );
208 }
209
210 public function modify_localize_data( $localize_data ) {
211 global $post;
212
213 if ( is_admin() ) {
214 if ( ! empty( $_GET['taxonomy'] ) && ( $_GET['taxonomy'] === 'course-category' || $_GET['taxonomy'] === 'course-tag' ) ) {
215 $localize_data['open_tutor_admin_menu'] = true;
216 }
217 } else {
218
219 // Assign quiz option
220 if ( ! empty( $post->post_type ) && $post->post_type === 'tutor_quiz' ) {
221 $single_quiz_options = (array) tutor_utils()->get_quiz_option( $post->ID );
222 $saved_quiz_options = array(
223 'quiz_when_time_expires' => tutor_utils()->get_option( 'quiz_when_time_expires' ),
224 );
225
226 $quiz_options = array_merge( $single_quiz_options, $saved_quiz_options );
227
228 $previous_attempts = tutor_utils()->quiz_attempts();
229
230 if ( $previous_attempts && count( $previous_attempts ) ) {
231 $quiz_options['quiz_auto_start'] = 0;
232 }
233
234 $localize_data['quiz_options'] = $quiz_options;
235 }
236
237 // Including player assets if video exists
238 if ( tutor_utils()->has_video_in_single() ) {
239 $localize_data['post_id'] = get_the_ID();
240 $localize_data['best_watch_time'] = 0;
241
242 $best_watch_time = tutor_utils()->get_lesson_reading_info( get_the_ID(), 0, 'video_best_watched_time' );
243 if ( $best_watch_time > 0 ) {
244 $localize_data['best_watch_time'] = $best_watch_time;
245 }
246 }
247 }
248
249 return $localize_data;
250 }
251
252 /**
253 * Load common scripts
254 *
255 * @return void
256 */
257 public function common_scripts() {
258
259 /**
260 * Load TinyMCE for tutor settings page if
261 * tutor pro is not available.
262 *
263 * @since v2.0.8
264 */
265 $baseurl = includes_url( 'js/tinymce' );
266 $current_page = Input::get( 'page' );
267
268 // If it is settings page & tutor pro not activated.
269 if ( 'tutor_settings' === $current_page && ! wp_script_is( 'wp-tinymce-root' ) ) {
270 wp_enqueue_script( 'tutor-tiny', $baseurl . '/tinymce.min.js', array( 'jquery' ), TUTOR_VERSION, true );
271 }
272
273 wp_enqueue_style( 'tutor-icon', tutor()->url . 'assets/css/tutor-icon.min.css', array(), TUTOR_VERSION );
274
275 // Common css library.
276 if ( is_rtl() ) {
277 wp_enqueue_style( 'tutor', tutor()->url . 'assets/css/tutor.rtl.min.css', array(), TUTOR_VERSION );
278 } else {
279 wp_enqueue_style( 'tutor', tutor()->url . 'assets/css/tutor.min.css', array(), TUTOR_VERSION );
280 }
281
282 // Load course builder resources
283 if ( tutor_utils()->get_course_builder_screen() ) {
284 wp_enqueue_script( 'tutor-course-builder', tutor()->url . 'assets/js/tutor-course-builder.min.js', array( 'jquery', 'wp-i18n' ), TUTOR_VERSION, true );
285 wp_enqueue_style( 'tutor-course-builder-css', tutor()->url . 'assets/css/tutor-course-builder.min.css', array(), TUTOR_VERSION );
286 }
287 /**
288 * Load tutor common scripts both backend and frontend
289 *
290 * @since v2.0.0
291 */
292 wp_enqueue_script( 'tutor-script', tutor()->url . 'assets/js/tutor.min.js', array( 'jquery', 'wp-i18n' ), TUTOR_VERSION, true );
293 }
294
295 public function load_meta_data() {
296 // Localize scripts
297 $localize_data = apply_filters( 'tutor_localize_data', $this->get_default_localized_data() );
298 wp_localize_script( 'tutor-frontend', '_tutorobject', $localize_data );
299 wp_localize_script( 'tutor-admin', '_tutorobject', $localize_data );
300 wp_localize_script( 'tutor-course-builder', '_tutorobject', $localize_data );
301 wp_localize_script( 'tutor-script', '_tutorobject', $localize_data );
302
303 // Inline styles
304 wp_add_inline_style( 'tutor-frontend', $this->load_color_palette() );
305 wp_add_inline_style( 'tutor-admin', $this->load_color_palette() );
306 }
307
308 private function load_color_palette() {
309 $colors = array(
310 'tutor_primary_color' => '--tutor-color-primary',
311 'tutor_primary_hover_color' => '--tutor-color-primary-hover',
312 'tutor_text_color' => '--tutor-body-color',
313 'tutor_border_color' => '--tutor-border-color',
314 'tutor_gray_color' => '--tutor-color-gray',
315 );
316
317 // admin colors
318 $admin_colors = array();
319 if ( is_admin() ) {
320 $admin_color = get_user_option( 'admin_color' );
321
322 switch ( $admin_color ) {
323 case 'light':
324 $admin_color_codes = array( '#04a4cc', '#04b0db' );
325 break;
326
327 case 'modern':
328 $admin_color_codes = array( '#3858e9', '#4664eb' );
329 break;
330
331 case 'blue':
332 $admin_color_codes = array( '#e1a948', '#e3af55' );
333 break;
334
335 case 'coffee':
336 $admin_color_codes = array( '#c7a589', '#ccad93' );
337 break;
338
339 case 'ectoplasm':
340 $admin_color_codes = array( '#a3b745', '#a9bd4f' );
341 break;
342
343 case 'midnight':
344 $admin_color_codes = array( '#e14d43', '#e35950' );
345 break;
346
347 case 'ocean':
348 $admin_color_codes = array( '#9ebaa0', '#a7c0a9' );
349 break;
350
351 case 'sunrise':
352 $admin_color_codes = array( '#dd823b', '#df8a48' );
353 break;
354
355 default:
356 $admin_color_codes = array( '#007cba', '#006ba1' );
357 break;
358 }
359
360 $admin_colors = array(
361 '--tutor-color-primary' => $admin_color_codes[0],
362 '--tutor-color-primary-hover' => $admin_color_codes[1],
363 );
364 }
365
366 $fallback_colors = array(
367 'tutor_primary_color' => '#3E64DE',
368 'tutor_primary_hover_color' => '#395BCA',
369 'tutor_text_color' => '#212327',
370 'tutor_border_color' => '#E3E5EB',
371 'tutor_gray_color' => '#CDCFD5',
372 );
373
374 $color_string = '';
375 foreach ( $colors as $key => $property ) {
376 $fallback_color = isset( $fallback_colors[ $key ] ) ? $fallback_colors[ $key ] : '#212327';
377 $color = tutor_utils()->get_option( $key, $fallback_color );
378 $color_rgb = tutor_utils()->hex2rgb( $color );
379
380 if ( is_admin() && isset( $admin_colors[ $property ] ) ) {
381 $color = $admin_colors[ $property ];
382 $color_rgb = tutor_utils()->hex2rgb( $admin_colors[ $property ] );
383 }
384
385 if ( $color ) {
386 $color_string .= $property . ':' . $color . ';';
387 }
388
389 if ( $color_rgb ) {
390 $color_string .= $property . '-rgb:' . $color_rgb . ';';
391 }
392 }
393
394 return ':root{' . $color_string . '}';
395 }
396
397 /**
398 * Add Tinymce button for placing shortcode
399 */
400 function tutor_add_mce_button() {
401 // check user permissions
402 if ( ! current_user_can( 'edit_posts' ) && ! current_user_can( 'edit_pages' ) ) {
403 return;
404 }
405 // check if WYSIWYG is enabled
406 if ( 'true' == get_user_option( 'rich_editing' ) ) {
407 add_filter( 'mce_external_plugins', array( $this, 'tutor_add_tinymce_js' ) );
408 add_filter( 'mce_buttons', array( $this, 'tutor_register_mce_button' ) );
409 }
410 }
411 // Declare script for new button
412 function tutor_add_tinymce_js( $plugin_array ) {
413 $plugin_array['tutor_button'] = tutor()->url . 'assets/js/lib/mce-button.js';
414 return $plugin_array;
415 }
416 // Register new button in the editor
417 function tutor_register_mce_button( $buttons ) {
418 array_push( $buttons, 'tutor_button' );
419 return $buttons;
420 }
421
422 /**
423 * Output generator tag to aid debugging.
424 *
425 * @param string $gen Generator.
426 * @param string $type Type.
427 * @return string
428 */
429 function tutor_generator_tag( $gen, $type ) {
430 switch ( $type ) {
431 case 'html':
432 $gen .= "\n" . '<meta name="generator" content="TutorLMS ' . TUTOR_VERSION . '">';
433 break;
434 case 'xhtml':
435 $gen .= "\n" . '<meta name="generator" content="TutorLMS ' . TUTOR_VERSION . '" />';
436 break;
437 }
438 return $gen;
439 }
440
441 /**
442 * load text domain handled script after all enqueue_scripts
443 * registered functions
444 *
445 * @since 1.9.0
446 */
447 function tutor_script_text_domain() {
448 wp_set_script_translations( 'tutor-frontend', 'tutor', tutor()->path . 'languages/' );
449 wp_set_script_translations( 'tutor-admin', 'tutor', tutor()->path . 'languages/' );
450 wp_set_script_translations( 'tutor-course-builder', 'tutor', tutor()->path . 'languages/' );
451 }
452
453 /**
454 * Add translation support for external tinyMCE button
455 *
456 * @since 1.9.7
457 */
458 function tutor_tinymce_translate() {
459 $locales['tutor_button'] = tutor()->path . 'includes/tinymce_translate.php';
460 return $locales;
461 }
462
463 public function add_identifier_class_to_body( $classes ) {
464 $course_builder_screen = tutor_utils()->get_course_builder_screen();
465 $to_add = array( 'tutor-lms' );
466
467 // Add backend course editor identifier class to body
468 if ( $course_builder_screen ) {
469 $to_add[] = is_admin() ? 'tutor-backend' : '';
470 $to_add[] = ' tutor-screen-course-builder tutor-screen-course-builder-' . $course_builder_screen . ' ';
471 }
472
473 // Add frontend course builder identifier class
474 if ( ! $course_builder_screen && tutor_utils()->is_tutor_frontend_dashboard() ) {
475 $to_add[] = 'tutor-screen-frontend-dashboard';
476 }
477
478 if ( is_admin() ) {
479 $screen = function_exists( 'get_current_screen' ) ? get_current_screen() : null;
480 $base = ( $screen && is_object( $screen ) && property_exists( $screen, 'base' ) ) ? $screen->base : '';
481 $index = strpos( $base, 'tutor' );
482
483 if ( $index === 0 || $index > 0 ) {
484 $to_add[] = 'tutor-backend';
485
486 if ( isset( $_GET['page'] ) && $_GET['page'] == 'tutor_settings' ) {
487 $to_add[] = 'tutor-screen-backend-settings ';
488 }
489 if ( isset( $_GET['page'] ) ) {
490 $to_add[] = 'tutor-backend-' . $_GET['page'];
491 }
492 }
493 }
494
495 // Remove duplicate classes if any
496 $to_add = array_unique( $to_add );
497
498 if ( is_array( $classes ) ) {
499 $classes = array_merge( $classes, $to_add );
500 } else {
501 $classes .= implode( ' ', $to_add );
502 }
503
504 return $classes;
505 }
506
507 /**
508 * Enqueue script for adding edit with frontend course builder button
509 * on the Gutenberg editor
510 *
511 * @since v2.0.5
512 *
513 * @return void
514 */
515 public static function add_frontend_editor_button() {
516 $wp_screen = get_current_screen();
517
518 if ( is_a( $wp_screen, 'WP_Screen' ) && tutor()->course_post_type === $wp_screen->post_type ) {
519 wp_enqueue_script( 'tutor-gutenberg', tutor()->url . 'assets/js/tutor-gutenberg.min.js', array(), TUTOR_VERSION, true );
520 $data = array(
521 'frontend_dashboard_url' => esc_url( trailingslashit( tutor_utils()->tutor_dashboard_url( 'create-course' ) ) ) . '?course_ID=' . get_the_ID(),
522 );
523
524 wp_add_inline_script(
525 'tutor-gutenberg',
526 'const tutorInlineData =' . json_encode( $data ),
527 'before'
528 );
529 }
530 }
531 }
532