PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 1.9.7
Tutor LMS – eLearning and online course solution v1.9.7
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 5 years ago Shortcode.php 4 years ago Student.php 5 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
327 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 // Load date picker for announcement at frontend
206 wp_enqueue_script('jquery-ui-datepicker');
207 }
208
209 private function load_color_palette() {
210
211 /**
212 * Default Color
213 */
214 $tutor_css = ":root{";
215 $tutor_primary_color = tutor_utils()->get_option('tutor_primary_color');
216 $tutor_primary_hover_color = tutor_utils()->get_option('tutor_primary_hover_color');
217 $tutor_text_color = tutor_utils()->get_option('tutor_text_color');
218 $tutor_light_color = tutor_utils()->get_option('tutor_light_color');
219
220 /**
221 * tutor buttons style
222 */
223 $tutor_button_primary = tutor_utils()->get_option('tutor_button_primary');
224 $tutor_button_danger = tutor_utils()->get_option('tutor_button_danger');
225 $tutor_button_success = tutor_utils()->get_option('tutor_button_success');
226 $tutor_button_warning = tutor_utils()->get_option('tutor_button_warning');
227
228 if ($tutor_primary_color){
229 $tutor_css .= " --tutor-primary-color: {$tutor_primary_color};";
230 }
231 if ($tutor_primary_hover_color){
232 $tutor_css .= " --tutor-primary-hover-color: {$tutor_primary_hover_color};";
233 }
234 if ($tutor_text_color){
235 $tutor_css .= " --tutor-text-color: {$tutor_text_color};";
236 }
237 if ($tutor_light_color){
238 $tutor_css .= " --tutor-light-color: {$tutor_light_color};";
239 }
240
241 /**
242 * check if button style setup
243 */
244 if($tutor_button_primary){
245 $tutor_css .= " --tutor-primary-button-color: {$tutor_button_primary}; ";
246 }
247 if($tutor_button_danger){
248 $tutor_css .= " --tutor-danger-button-color: {$tutor_button_danger}; ";
249 }
250 if($tutor_button_success){
251 $tutor_css .= " --tutor-success-button-color: {$tutor_button_success}; ";
252 }
253 if($tutor_button_warning){
254 $tutor_css .= " --tutor-warning-button-color: {$tutor_button_warning}; ";
255 }
256
257 $tutor_css .= "}";
258
259 return $tutor_css;
260 }
261
262 /**
263 * Add Tinymce button for placing shortcode
264 */
265 function tutor_add_mce_button() {
266 // check user permissions
267 if ( !current_user_can( 'edit_posts' ) && !current_user_can( 'edit_pages' ) ) {
268 return;
269 }
270 // check if WYSIWYG is enabled
271 if ( 'true' == get_user_option( 'rich_editing' ) ) {
272 add_filter( 'mce_external_plugins', array($this, 'tutor_add_tinymce_js') );
273 add_filter( 'mce_buttons', array($this, 'tutor_register_mce_button') );
274 }
275 }
276 // Declare script for new button
277 function tutor_add_tinymce_js( $plugin_array ) {
278 $plugin_array['tutor_button'] = tutor()->url .'assets/js/mce-button.js';
279 return $plugin_array;
280 }
281 // Register new button in the editor
282 function tutor_register_mce_button( $buttons ) {
283 array_push( $buttons, 'tutor_button' );
284 return $buttons;
285 }
286
287 /**
288 * Output generator tag to aid debugging.
289 *
290 * @param string $gen Generator.
291 * @param string $type Type.
292 * @return string
293 */
294 function tutor_generator_tag( $gen, $type ) {
295 switch ( $type ) {
296 case 'html':
297 $gen .= "\n" . '<meta name="generator" content="TutorLMS ' . esc_attr( TUTOR_VERSION ) . '">';
298 break;
299 case 'xhtml':
300 $gen .= "\n" . '<meta name="generator" content="TutorLMS ' . esc_attr( TUTOR_VERSION ) . '" />';
301 break;
302 }
303 return $gen;
304 }
305
306 /**
307 * load text domain handled script after all enqueue_scripts
308 * registered functions
309 * @since 1.9.0
310 */
311 function tutor_script_text_domain() {
312 wp_set_script_translations( 'tutor-frontend', 'tutor', tutor()->path.'languages/' );
313 wp_set_script_translations( 'tutor-main', 'tutor', tutor()->path.'languages/' );
314 wp_set_script_translations( 'tutor-admin', 'tutor', tutor()->path.'languages/' );
315 }
316
317 /**
318 * Add translation support for external tinyMCE button
319 *
320 * @since 1.9.7
321 */
322 function tutor_tinymce_translate() {
323 $locales['tutor_button'] = tutor()->path.'includes/tinymce_translate.php';
324 return $locales;
325 }
326
327 }