PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 1.9.8
Tutor LMS – eLearning and online course solution v1.9.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 Assets.php 4 years ago Course.php 4 years ago Course_Filter.php 4 years ago Course_Settings_Tabs.php 5 years ago Course_Widget.php 5 years ago Custom_Validation.php 5 years ago Dashboard.php 5 years ago Email.php 5 years ago FormHandler.php 5 years ago Frontend.php 5 years ago Gutenberg.php 4 years ago Instructor.php 4 years ago Instructors_List.php 4 years ago Lesson.php 4 years ago Options.php 4 years ago Post_types.php 4 years ago Private_Course_Access.php 5 years ago Q_and_A.php 5 years ago Question_Answers_List.php 4 years ago Quiz.php 4 years ago Quiz_Attempts_List.php 4 years ago RestAPI.php 5 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 5 years ago Template.php 4 years ago Theme_Compatibility.php 5 years ago Tools.php 5 years ago Tutor.php 4 years ago TutorEDD.php 5 years ago Tutor_Base.php 5 years ago Tutor_List_Table.php 4 years ago Tutor_Setup.php 4 years ago Upgrader.php 5 years ago User.php 4 years ago Utils.php 4 years ago Video_Stream.php 5 years ago Withdraw.php 5 years ago Withdraw_Requests_List.php 4 years ago WooCommerce.php 4 years ago
Assets.php
335 lines
1 <?php
2 namespace TUTOR;
3
4 if ( ! defined( 'ABSPATH' ) )
5 exit;
6
7 class Assets{
8
9 public function __construct() {
10 add_action('admin_enqueue_scripts', array($this, 'admin_scripts'));
11 add_action('admin_enqueue_scripts', array($this, 'tutor_script_text_domain'),100);
12 add_action('wp_enqueue_scripts', array($this, 'frontend_scripts'));
13 /**
14 * register translateable function to load
15 * handled script with text domain attached to
16 * @since 1.9.0
17 */
18 add_action('wp_enqueue_scripts', array($this, 'tutor_script_text_domain'),100);
19 add_action( 'admin_head', array($this, 'tutor_add_mce_button'));
20 add_filter( 'get_the_generator_html', array($this, 'tutor_generator_tag'), 10, 2 );
21 add_filter( 'get_the_generator_xhtml', array($this, 'tutor_generator_tag'), 10, 2 );
22
23 /**
24 * Add translation support for external tinyMCE button
25 *
26 * @since 1.9.7
27 */
28 add_filter( 'mce_external_languages', array( $this, 'tutor_tinymce_translate' ) );
29 }
30
31 private function get_default_localized_data() {
32 return array(
33 'ajaxurl' => admin_url('admin-ajax.php'),
34 'home_url' => get_home_url(),
35 'base_path' => tutor()->basepath,
36 'tutor_url' => tutor()->url,
37 'tutor_pro_url' => function_exists('tutor_pro') ? tutor_pro()->url : null,
38 'nonce_key' => tutor()->nonce,
39 tutor()->nonce => wp_create_nonce( tutor()->nonce_action ),
40 'loading_icon_url' => get_admin_url() . 'images/wpspin_light.gif',
41 'placeholder_img_src' => tutor_placeholder_img_src(),
42 'enable_lesson_classic_editor' => get_tutor_option('enable_lesson_classic_editor'),
43 'tutor_frontend_dashboard_url' => tutor_utils()->get_tutor_dashboard_page_permalink(),
44 'wp_date_format' => tutor_js_date_format_against_wp()
45 );
46 }
47
48 public function admin_scripts(){
49 wp_enqueue_style('tutor-select2', tutor()->url.'assets/packages/select2/select2.min.css', array(), tutor()->version);
50 wp_enqueue_style('tutor-admin', tutor()->url.'assets/css/tutor-admin.min.css', array(), tutor()->version);
51 wp_enqueue_style('tutor-icon', tutor()->url.'assets/icons/css/tutor-icon.css', array(), tutor()->version);
52
53 /**
54 * Scripts
55 */
56 wp_enqueue_media();
57
58 wp_enqueue_script( 'wp-color-picker' );
59 wp_enqueue_style( 'wp-color-picker' );
60
61 wp_enqueue_script('jquery-ui-slider');
62 wp_enqueue_script('jquery-ui-datepicker');
63
64 wp_enqueue_script('tutor-select2', tutor()->url.'assets/packages/select2/select2.full.min.js', array('jquery'), tutor()->version, true );
65 wp_enqueue_script( 'tutor-main', tutor()->url . 'assets/js/tutor.js', array( 'jquery', 'wp-i18n' ), tutor()->version, true );
66 wp_enqueue_script('tutor-admin', tutor()->url.'assets/js/tutor-admin.js', array('jquery', 'wp-color-picker', 'wp-i18n'), tutor()->version, true );
67
68 $tutor_localize_data = $this->get_default_localized_data();
69
70 if ( ! empty($_GET['taxonomy']) && ( $_GET['taxonomy'] === 'course-category' || $_GET['taxonomy'] === 'course-tag') ){
71 $tutor_localize_data['open_tutor_admin_menu'] = true;
72 }
73
74 $tutor_localize_data = apply_filters( 'tutor_localize_data', $tutor_localize_data );
75 wp_localize_script('tutor-admin', '_tutorobject', $tutor_localize_data);
76
77 wp_add_inline_style( 'tutor-admin', $this->load_color_palette() );
78 }
79
80 /**
81 * Load frontend scripts
82 */
83 public function frontend_scripts(){
84 global $post, $wp_query;
85
86 $is_script_debug = tutor_utils()->is_script_debug();
87 $suffix = $is_script_debug ? '' : '.min';
88
89 /**
90 * We checked wp_enqueue_editor() in condition because it conflicting with Divi Builder
91 * condition updated @since v.1.7.4
92 */
93
94 if (is_single()){
95 if (function_exists('et_pb_is_pagebuilder_used')) {
96 $is_page_builder_used = et_pb_is_pagebuilder_used(get_the_ID());
97 if (!$is_page_builder_used) {
98 wp_enqueue_editor();
99 }
100 } else {
101 wp_enqueue_editor();
102 }
103 }
104
105 /**
106 * Initializing quicktags script to use in wp_editor();
107 */
108 wp_enqueue_script( 'quicktags');
109
110 $tutor_dashboard_page_id = (int) tutor_utils()->get_option('tutor_dashboard_page_id');
111 if ($tutor_dashboard_page_id === get_the_ID()){
112 wp_enqueue_media();
113 }
114
115 //$options = tutor_utils()->get_option();
116 $localize_data = $this->get_default_localized_data();
117
118 if ( ! empty($post->post_type) && $post->post_type === 'tutor_quiz'){
119 $single_quiz_options = (array) tutor_utils()->get_quiz_option($post->ID);
120 $saved_quiz_options = array(
121 'quiz_when_time_expires' => tutils()->get_option('quiz_when_time_expires'),
122 );
123
124 $quiz_options = array_merge($single_quiz_options, $saved_quiz_options);
125
126 $previous_attempts = tutor_utils()->quiz_attempts();
127
128 if ($previous_attempts && count($previous_attempts)) {
129 $quiz_options['quiz_auto_start'] = 0;
130 }
131
132 $localize_data['quiz_options'] = $quiz_options;
133 }
134
135 /**
136 * Enabling Sorting, draggable, droppable...
137 */
138 wp_enqueue_script('jquery-ui-sortable');
139 /**
140 * Tutor Icon
141 */
142 wp_enqueue_style('tutor-icon', tutor()->url.'assets/icons/css/tutor-icon.css', array(), tutor()->version);
143
144
145 //Plyr
146 wp_enqueue_style( 'tutor-plyr', tutor()->url . 'assets/packages/plyr/plyr.css', array(), tutor()->version );
147 wp_enqueue_script( 'tutor-plyr', tutor()->url . 'assets/packages/plyr/plyr.polyfilled.min.js', array( 'jquery' ), tutor()->version, true );
148
149 //Social Share
150 wp_enqueue_script( 'tutor-social-share', tutor()->url . 'assets/packages/SocialShare/SocialShare.min.js', array( 'jquery' ), tutor()->version, true );
151
152 //Including player assets if video exists
153 if (tutor_utils()->has_video_in_single()) {
154 $localize_data['post_id'] = get_the_ID();
155 $localize_data['best_watch_time'] = 0;
156
157 $best_watch_time = tutor_utils()->get_lesson_reading_info(get_the_ID(), 0, 'video_best_watched_time');
158 if ($best_watch_time > 0){
159 $localize_data['best_watch_time'] = $best_watch_time;
160 }
161 }
162
163 /**
164 * Chart Data
165 */
166 if ( ! empty($wp_query->query_vars['tutor_dashboard_page']) ) {
167 wp_enqueue_script('jquery-ui-slider');
168
169 wp_enqueue_style('tutor-select2', tutor()->url.'assets/packages/select2/select2.min.css', array(), tutor()->version);
170 wp_enqueue_script('tutor-select2', tutor()->url.'assets/packages/select2/select2.full.min.js', array('jquery'), tutor()->version, true );
171
172 if ($wp_query->query_vars['tutor_dashboard_page'] === 'earning'){
173 wp_enqueue_script( 'tutor-front-chart-js', tutor()->url . 'assets/js/Chart.bundle.min.js', array(), tutor()->version );
174 wp_enqueue_script( 'jquery-ui-datepicker' );
175 }
176 }
177 //End: chart data
178
179 $localize_data = apply_filters('tutor_localize_data', $localize_data);
180 if (tutor_utils()->get_option('load_tutor_css')){
181 wp_enqueue_style('tutor-frontend', tutor()->url."assets/css/tutor-front{$suffix}.css", array(), tutor()->version);
182 }
183 if (tutor_utils()->get_option('load_tutor_js')) {
184 wp_enqueue_script( 'tutor-main', tutor()->url . 'assets/js/tutor.js', array( 'jquery', 'wp-i18n' ), tutor()->version, true );
185 /**
186 * dependency wp-i18n added for
187 * translate js file
188 * @since 1.9.0
189 */
190 wp_register_script( 'tutor-frontend', tutor()->url . 'assets/js/tutor-front.js', array( 'jquery', 'wp-i18n'), tutor()->version, true );
191 wp_enqueue_script( 'tutor-frontend');
192 wp_localize_script('tutor-frontend', '_tutorobject', $localize_data);
193 /**
194 * Location data added for providing support on the frontend
195 *
196 * for zoom
197 *
198 * @since 1.9.4
199 */
200 wp_localize_script('tutor-main', '_tutorobject', $localize_data);
201 }
202
203 wp_add_inline_style( 'tutor-frontend', $this->load_color_palette() );
204
205 /**
206 * Load frontend dashboard style
207 * @since v1.9.8
208 */
209 if(tutor_utils()->is_tutor_frontend_dashboard()) {
210 wp_enqueue_style('tutor-frontend-dashboard-css', tutor()->url . 'assets/css/tutor-frontend-dashboard.min.css', tutor()->version);
211 }
212
213 // Load date picker for announcement at frontend
214 wp_enqueue_script('jquery-ui-datepicker');
215 }
216
217 private function load_color_palette() {
218
219 /**
220 * Default Color
221 */
222 $tutor_css = ":root{";
223 $tutor_primary_color = tutor_utils()->get_option('tutor_primary_color');
224 $tutor_primary_hover_color = tutor_utils()->get_option('tutor_primary_hover_color');
225 $tutor_text_color = tutor_utils()->get_option('tutor_text_color');
226 $tutor_light_color = tutor_utils()->get_option('tutor_light_color');
227
228 /**
229 * tutor buttons style
230 */
231 $tutor_button_primary = tutor_utils()->get_option('tutor_button_primary');
232 $tutor_button_danger = tutor_utils()->get_option('tutor_button_danger');
233 $tutor_button_success = tutor_utils()->get_option('tutor_button_success');
234 $tutor_button_warning = tutor_utils()->get_option('tutor_button_warning');
235
236 if ($tutor_primary_color){
237 $tutor_css .= " --tutor-primary-color: {$tutor_primary_color};";
238 }
239 if ($tutor_primary_hover_color){
240 $tutor_css .= " --tutor-primary-hover-color: {$tutor_primary_hover_color};";
241 }
242 if ($tutor_text_color){
243 $tutor_css .= " --tutor-text-color: {$tutor_text_color};";
244 }
245 if ($tutor_light_color){
246 $tutor_css .= " --tutor-light-color: {$tutor_light_color};";
247 }
248
249 /**
250 * check if button style setup
251 */
252 if($tutor_button_primary){
253 $tutor_css .= " --tutor-primary-button-color: {$tutor_button_primary}; ";
254 }
255 if($tutor_button_danger){
256 $tutor_css .= " --tutor-danger-button-color: {$tutor_button_danger}; ";
257 }
258 if($tutor_button_success){
259 $tutor_css .= " --tutor-success-button-color: {$tutor_button_success}; ";
260 }
261 if($tutor_button_warning){
262 $tutor_css .= " --tutor-warning-button-color: {$tutor_button_warning}; ";
263 }
264
265 $tutor_css .= "}";
266
267 return $tutor_css;
268 }
269
270 /**
271 * Add Tinymce button for placing shortcode
272 */
273 function tutor_add_mce_button() {
274 // check user permissions
275 if ( !current_user_can( 'edit_posts' ) && !current_user_can( 'edit_pages' ) ) {
276 return;
277 }
278 // check if WYSIWYG is enabled
279 if ( 'true' == get_user_option( 'rich_editing' ) ) {
280 add_filter( 'mce_external_plugins', array($this, 'tutor_add_tinymce_js') );
281 add_filter( 'mce_buttons', array($this, 'tutor_register_mce_button') );
282 }
283 }
284 // Declare script for new button
285 function tutor_add_tinymce_js( $plugin_array ) {
286 $plugin_array['tutor_button'] = tutor()->url .'assets/js/mce-button.js';
287 return $plugin_array;
288 }
289 // Register new button in the editor
290 function tutor_register_mce_button( $buttons ) {
291 array_push( $buttons, 'tutor_button' );
292 return $buttons;
293 }
294
295 /**
296 * Output generator tag to aid debugging.
297 *
298 * @param string $gen Generator.
299 * @param string $type Type.
300 * @return string
301 */
302 function tutor_generator_tag( $gen, $type ) {
303 switch ( $type ) {
304 case 'html':
305 $gen .= "\n" . '<meta name="generator" content="TutorLMS ' . esc_attr( TUTOR_VERSION ) . '">';
306 break;
307 case 'xhtml':
308 $gen .= "\n" . '<meta name="generator" content="TutorLMS ' . esc_attr( TUTOR_VERSION ) . '" />';
309 break;
310 }
311 return $gen;
312 }
313
314 /**
315 * load text domain handled script after all enqueue_scripts
316 * registered functions
317 * @since 1.9.0
318 */
319 function tutor_script_text_domain() {
320 wp_set_script_translations( 'tutor-frontend', 'tutor', tutor()->path.'languages/' );
321 wp_set_script_translations( 'tutor-main', 'tutor', tutor()->path.'languages/' );
322 wp_set_script_translations( 'tutor-admin', 'tutor', tutor()->path.'languages/' );
323 }
324
325 /**
326 * Add translation support for external tinyMCE button
327 *
328 * @since 1.9.7
329 */
330 function tutor_tinymce_translate() {
331 $locales['tutor_button'] = tutor()->path.'includes/tinymce_translate.php';
332 return $locales;
333 }
334
335 }