PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 1.3.1
Tutor LMS – eLearning and online course solution v1.3.1
4.0.0 3.9.15 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 / assets / js / tutor-front.js
tutor / assets / js Last commit date
Chart.bundle.min.js 7 years ago gutenberg_blocks.js 7 years ago mce-button.js 7 years ago tutor-admin.js 7 years ago tutor-front.js 7 years ago
tutor-front.js
779 lines
1 jQuery(document).ready(function($){
2 'use strict';
3
4 $(document).on('change', '.tutor-course-filter-form', function(e){
5 e.preventDefault();
6 $(this).closest('form').submit();
7 });
8
9 const videoPlayer = {
10 nonce_key : _tutorobject.nonce_key,
11 video_track_data : $('#tutor_video_tracking_information').val(),
12 track_player : function(){
13 var that = this;
14
15 var video_data = this.video_track_data ? JSON.parse(this.video_track_data) : {};
16
17 if (typeof Plyr !== 'undefined') {
18 const player = new Plyr('#tutorPlayer');
19
20 player.on('ready', function(event){
21 const instance = event.detail.plyr;
22 if (video_data.best_watch_time > 0) {
23 instance.media.currentTime = video_data.best_watch_time;
24 }
25 that.sync_time(instance);
26 });
27
28 var tempTimeNow = 0;
29 var intervalSeconds = 60; //Send to tutor backend about video playing time in this interval
30 player.on('timeupdate', function(event){
31 const instance = event.detail.plyr;
32
33 var tempTimeNowInSec = (tempTimeNow / 4); //timeupdate firing 250ms interval
34 if (tempTimeNowInSec >= intervalSeconds){
35 that.sync_time(instance);
36 tempTimeNow = 0;
37 }
38 tempTimeNow++;
39 });
40
41 player.on('ended', function(event){
42 const instance = event.detail.plyr;
43
44 var data = {is_ended:true};
45 that.sync_time(instance, data)
46 });
47 }
48 },
49 sync_time: function(instance, options){
50 /**
51 * TUTOR is sending about video playback information to server.
52 */
53 var video_data = this.video_track_data ? JSON.parse(this.video_track_data) : {};
54 var data = {action: 'sync_video_playback', currentTime : instance.currentTime, duration:instance.duration, post_id : video_data.post_id};
55 data[this.nonce_key] = _tutorobject[this.nonce_key];
56
57 var data_send = data;
58 if(options){
59 data_send = Object.assign(data, options);
60 }
61 $.post(_tutorobject.ajaxurl, data_send);
62 },
63 init: function(){
64 this.track_player();
65 }
66 };
67
68 /**
69 * Fire TUTOR video
70 * @since v.1.0.0
71 */
72 if ($('#tutorPlayer').length){
73 videoPlayer.init();
74 }
75
76 $(document).on('change keyup paste', '.tutor_user_name', function(){
77 $(this).val(tutor_slugify($(this).val()));
78 });
79
80 function tutor_slugify(text) {
81 return text.toString().toLowerCase()
82 .replace(/\s+/g, '-') // Replace spaces with -
83 .replace(/[^\w\-]+/g, '') // Remove all non-word chars
84 .replace(/\-\-+/g, '-') // Replace multiple - with single -
85 .replace(/^-+/, '') // Trim - from start of text
86 .replace(/-+$/, ''); // Trim - from end of text
87 }
88
89 /**
90 * Hover tutor rating and set value
91 */
92 $(document).on('hover', '.tutor-write-review-box .tutor-star-rating-group i', function(){
93 $(this).closest('.tutor-star-rating-group').find('i').removeClass('tutor-icon-star-full').addClass('tutor-icon-star-line');
94 var currentRateValue = $(this).attr('data-rating-value');
95 for (var i = 1; i<= currentRateValue; i++){
96 $(this).closest('.tutor-star-rating-group').find('i[data-rating-value="'+i+'"]').removeClass('tutor-icon-star-line').addClass('tutor-icon-star-full');
97 }
98 $(this).closest('.tutor-star-rating-group').find('input[name="tutor_rating_gen_input"]').val(currentRateValue);
99 });
100
101 $(document).on('click', '.tutor-star-rating-group i', function(){
102 var rating = $(this).attr('data-rating-value');
103 $(this).closest('.tutor-star-rating-group').find('input[name="tutor_rating_gen_input"]').val(rating);
104 });
105
106 $(document).on('click', '.tutor_submit_review_btn', function (e) {
107 e.preventDefault();
108 var $that = $(this);
109 var rating = $that.closest('form').find('input[name="tutor_rating_gen_input"]').val();
110 var review = $that.closest('form').find('textarea[name="review"]').val();
111 review = review.trim();
112
113 var course_id = $('input[name="tutor_course_id"]').val();
114 var data = {course_id : course_id, rating : rating, review:review, action: 'tutor_place_rating' };
115
116 if (review) {
117 $.ajax({
118 url: _tutorobject.ajaxurl,
119 type: 'POST',
120 data: data,
121 beforeSend: function () {
122 $that.addClass('updating-icon');
123 },
124 success: function (data) {
125 var review_id = data.data.review_id;
126 var review = data.data.review;
127 $('.tutor-review-'+review_id+' .review-content').html(review);
128 location.reload();
129 }
130 });
131 }
132 });
133
134 $(document).on('click', '.write-course-review-link-btn', function(e){
135 e.preventDefault();
136 $(this).siblings('.tutor-write-review-form').slideToggle();
137 });
138
139 $(document).on('click', '.tutor-ask-question-btn', function(e){
140 e.preventDefault();
141 $('.tutor-add-question-wrap').slideToggle();
142 });
143 $(document).on('click', '.tutor_question_cancel', function(e){
144 e.preventDefault();
145 $('.tutor-add-question-wrap').toggle();
146 });
147
148 $(document).on('submit', '#tutor-ask-question-form', function(e){
149 e.preventDefault();
150
151 var $form = $(this);
152 var data = $(this).serialize()+'&action=tutor_ask_question';
153
154 $.ajax({
155 url: _tutorobject.ajaxurl,
156 type: 'POST',
157 data: data,
158 beforeSend: function () {
159 $form.find('.tutor_ask_question_btn').addClass('updating-icon');
160 },
161 success: function (data) {
162 if (data.success){
163 $('.tutor-add-question-wrap').hide();
164 window.location.reload();
165 }
166 },
167 complete: function () {
168 $form.find('.tutor_ask_question_btn').removeClass('updating-icon');
169 }
170 });
171 });
172
173 $(document).on('submit', '.tutor-add-answer-form', function(e){
174 e.preventDefault();
175
176 var $form = $(this);
177 var data = $(this).serialize()+'&action=tutor_add_answer';
178
179 $.ajax({
180 url: _tutorobject.ajaxurl,
181 type: 'POST',
182 data: data,
183 beforeSend: function () {
184 $form.find('.tutor_add_answer_btn').addClass('updating-icon');
185 },
186 success: function (data) {
187 if (data.success){
188 window.location.reload();
189 }
190 },
191 complete: function () {
192 $form.find('.tutor_add_answer_btn').removeClass('updating-icon');
193 }
194 });
195 });
196
197 $(document).on('focus', '.tutor_add_answer_textarea', function(e){
198 e.preventDefault();
199
200 var question_id = $(this).closest('.tutor_add_answer_wrap').attr('data-question-id');
201 var conf = {
202 tinymce: {
203 wpautop:true,
204 //plugins : 'charmap colorpicker compat3x directionality fullscreen hr image lists media paste tabfocus textcolor wordpress wpautoresize wpdialogs wpeditimage wpemoji wpgallery wplink wptextpattern wpview',
205 toolbar1: 'bold italic underline bullist strikethrough numlist blockquote alignleft aligncenter alignright undo redo link unlink spellchecker fullscreen'
206 },
207 };
208 wp.editor.initialize('tutor_answer_'+question_id, conf);
209 });
210
211 $(document).on('click', '.tutor_cancel_wp_editor', function(e){
212 e.preventDefault();
213 $(this).closest('.tutor_wp_editor_wrap').toggle();
214 $(this).closest('.tutor_add_answer_wrap').find('.tutor_wp_editor_show_btn_wrap').toggle();
215 var question_id = $(this).closest('.tutor_add_answer_wrap').attr('data-question-id');
216 wp.editor.remove('tutor_answer_'+question_id);
217 });
218
219 $(document).on('click', '.tutor_wp_editor_show_btn', function(e){
220 e.preventDefault();
221 $(this).closest('.tutor_add_answer_wrap').find('.tutor_wp_editor_wrap').toggle();
222 $(this).closest('.tutor_wp_editor_show_btn_wrap').toggle();
223 });
224
225 /**
226 * Quiz attempt
227 */
228 var $tutor_quiz_time_update = $('#tutor-quiz-time-update');
229 var attempt_settings = null;
230 if ($tutor_quiz_time_update.length){
231 attempt_settings = JSON.parse($tutor_quiz_time_update.attr('data-attempt-settings'));
232 var attempt_meta = JSON.parse($tutor_quiz_time_update.attr('data-attempt-meta'));
233
234 if (attempt_meta.time_limit.time_limit_seconds > 0) {
235 //No time Zero limit for
236 var countDownDate = new Date(attempt_settings.attempt_started_at).getTime() + (attempt_meta.time_limit.time_limit_seconds * 1000);
237 var time_now = new Date(attempt_meta.date_time_now).getTime();
238
239 var tutor_quiz_interval = setInterval(function () {
240 var distance = countDownDate - time_now;
241
242 var days = Math.floor(distance / (1000 * 60 * 60 * 24));
243 var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
244 var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
245 var seconds = Math.floor((distance % (1000 * 60)) / 1000);
246
247 var countdown_human = '';
248
249 if (days) {
250 countdown_human += days + "d ";
251 }
252 if (hours) {
253 countdown_human += hours + "h ";
254 }
255 if (minutes) {
256 countdown_human += minutes + "m ";
257 }
258 if (seconds) {
259 countdown_human += seconds + "s ";
260 }
261
262 if (distance < 0) {
263 clearInterval(tutor_quiz_interval);
264 countdown_human = "EXPIRED";
265 //Set the quiz attempt to timeout in ajax
266
267 if (_tutorobject.options.quiz_when_time_expires === 'autosubmit') {
268 /**
269 * Auto Submit
270 */
271 $('form#tutor-answering-quiz').submit();
272
273 } else if (_tutorobject.options.quiz_when_time_expires === 'autoabandon') {
274 /**
275 *
276 * @type {jQuery}
277 *
278 * Current attempt will be cancel with attempt status attempt_timeout
279 */
280
281 var quiz_id = $('#tutor_quiz_id').val();
282 var tutor_quiz_remaining_time_secs = $('#tutor_quiz_remaining_time_secs').val();
283 var quiz_timeout_data = {quiz_id: quiz_id, action: 'tutor_quiz_timeout'};
284
285 $.ajax({
286 url: _tutorobject.ajaxurl,
287 type: 'POST',
288 data: quiz_timeout_data,
289 success: function (data) {
290 if (data.success) {
291 window.location.reload(true);
292 }
293 },
294 complete: function () {
295 $('#tutor-quiz-body').html('');
296 window.location.reload(true);
297 }
298 });
299 }
300
301 }
302 time_now = time_now + 1000;
303 $tutor_quiz_time_update.html(countdown_human);
304 }, 1000);
305 }else{
306 $tutor_quiz_time_update.closest('.time-remaining').remove();
307 }
308 }
309
310 var $quiz_start_form = $('#tutor-quiz-body form#tutor-start-quiz');
311 if ($quiz_start_form.length){
312 if (_tutorobject.quiz_options.quiz_auto_start === '1'){
313 $quiz_start_form.submit();
314 }
315 }
316
317 // tutor course content accordion
318 $('.tutor-course-topic.tutor-active').find('.tutor-course-lessons').slideDown();
319 $('.tutor-course-title').on('click', function () {
320 var lesson = $(this).siblings('.tutor-course-lessons');
321 $(this).closest('.tutor-course-topic').toggleClass('tutor-active');
322 lesson.slideToggle();
323 });
324
325 $('.tutor-topics-title').on('click', function () {
326 $(this).siblings('.tutor-topics-summery').slideToggle();
327 });
328
329 $(document).on('click', '.tutor-course-wishlist-btn', function (e) {
330 e.preventDefault();
331
332 var $that = $(this);
333 var course_id = $that.attr('data-course-id');
334
335 $.ajax({
336 url: _tutorobject.ajaxurl,
337 type: 'POST',
338 data: {course_id : course_id, 'action': 'tutor_course_add_to_wishlist'},
339 beforeSend: function () {
340 $that.addClass('updating-icon');
341 },
342 success: function (data) {
343 if (data.success){
344 if (data.data.status === 'added'){
345 $that.addClass('has-wish-listed');
346 }else{
347 $that.removeClass('has-wish-listed');
348 }
349 }else{
350 window.location = data.data.redirect_to;
351 }
352 },
353 complete: function () {
354 $that.removeClass('updating-icon');
355 }
356 });
357 });
358
359 $(document).on('click', '.tutor-single-lesson-a', function (e) {
360 e.preventDefault();
361
362 var $that = $(this);
363 var lesson_id = $that.attr('data-lesson-id');
364 var $wrap = $('#tutor-single-entry-content');
365
366 $.ajax({
367 url: _tutorobject.ajaxurl,
368 type: 'POST',
369 data: {lesson_id : lesson_id, 'action': 'tutor_render_lesson_content'},
370 beforeSend: function () {
371 var page_title = $that.find('.lesson_title').text();
372 $('head title').text(page_title);
373 window.history.pushState('obj', page_title, $that.attr('href'));
374 $wrap.addClass('loading-lesson');
375 $('.tutor-single-lesson-items').removeClass('active');
376 $that.closest('.tutor-single-lesson-items').addClass('active');
377 },
378 success: function (data) {
379 $wrap.html(data.data.html);
380 videoPlayer.init();
381 },
382 complete: function () {
383 $wrap.removeClass('loading-lesson');
384 }
385 });
386 });
387
388 $(document).on('click', '.sidebar-single-quiz-a', function (e) {
389 e.preventDefault();
390
391 var $that = $(this);
392 var quiz_id = $that.attr('data-quiz-id');
393 var page_title = $that.find('.lesson_title').text();
394 var $wrap = $('#tutor-single-entry-content');
395
396 $.ajax({
397 url: _tutorobject.ajaxurl,
398 type: 'POST',
399 data: {quiz_id : quiz_id, 'action': 'tutor_render_quiz_content'},
400 beforeSend: function () {
401 $('head title').text(page_title);
402 window.history.pushState('obj', page_title, $that.attr('href'));
403 $wrap.addClass('loading-lesson');
404 $('.tutor-single-lesson-items').removeClass('active');
405 $that.closest('.tutor-single-lesson-items').addClass('active');
406 },
407 success: function (data) {
408 $wrap.html(data.data.html);
409 init_quiz_builder();
410 },
411 complete: function () {
412 $wrap.removeClass('loading-lesson');
413 }
414 });
415 });
416
417 /**
418 * @date 05 Feb, 2019
419 */
420
421 $(document).on('click', '.tutor-lesson-sidebar-hide-bar', function(e){
422 e.preventDefault();
423 $('.tutor-lesson-sidebar').toggle();
424 });
425
426 $(document).on('click', '.tutor-tabs-btn-group a', function (e) {
427 e.preventDefault();
428 var $that = $(this);
429
430 var tabSelector = $that.attr('href');
431 $('.tutor-lesson-sidebar-tab-item').hide();
432 $(tabSelector).show();
433
434 $('.tutor-tabs-btn-group a').removeClass('active');
435 $that.addClass('active');
436 });
437 /**
438 * @date 18 Feb, 2019
439 * @since v.1.0.0
440 */
441
442 function init_quiz_builder() {
443 if (jQuery().sortable) {
444 $(".tutor-quiz-answers-wrap").sortable({
445 handle: ".answer-sorting-bar",
446 start: function (e, ui) {
447 ui.placeholder.css('visibility', 'visible');
448 },
449 stop: function (e, ui) {
450
451 //Sorting Stopped...
452 },
453 }).disableSelection();
454 ;
455
456
457 $(".quiz-draggable-rand-answers, .quiz-answer-matching-droppable").sortable({
458 connectWith: ".quiz-answer-matching-droppable",
459 placeholder: "drop-hover"
460
461 }).disableSelection();
462 }
463 }
464 init_quiz_builder();
465 /**
466 * Quiz view
467 * @date 22 Feb, 2019
468 * @since v.1.0.0
469 */
470
471 $(document).on('click', '.tutor-quiz-answer-next-btn', function (e) {
472 e.preventDefault();
473 var $that = $(this);
474 var question_id = parseInt($that.closest('.quiz-attempt-single-question').attr('id').match(/\d+/)[0], 10);
475
476 var next_question_id = $that.closest('.quiz-attempt-single-question').attr('data-next-question-id');
477
478 if (next_question_id) {
479 var $nextQuestion = $(next_question_id);
480 if ($nextQuestion && $nextQuestion.length) {
481 $('.quiz-attempt-single-question').hide();
482 $nextQuestion.show();
483
484 /**
485 * If pagination exists, set active class
486 */
487
488 if ($('.tutor-quiz-questions-pagination').length){
489 $('.tutor-quiz-question-paginate-item').removeClass('active');
490 $('.tutor-quiz-questions-pagination a[href="'+next_question_id+'"]').addClass('active');
491 }
492
493 }
494 }
495 });
496 $(document).on('click', '.tutor-quiz-question-paginate-item', function (e) {
497 e.preventDefault();
498 var $that = $(this);
499 var $question = $($that.attr('href'));
500 $('.quiz-attempt-single-question').hide();
501 $question.show();
502
503 //Active Class
504 $('.tutor-quiz-question-paginate-item').removeClass('active');
505 $that.addClass('active');
506 });
507
508 /**
509 * Limit Short Answer Question Type
510 */
511 $(document).on('keyup', 'textarea.question_type_short_answer', function (e) {
512 var $that = $(this);
513 var value = $that.val();
514 var limit = _tutorobject.quiz_options.short_answer_characters_limit;
515 var remaining = limit - value.length;
516
517 if (remaining < 1){
518 $that.val(value.substr(0, limit));
519 remaining = 0;
520 }
521 $that.closest('.tutor-quiz-answers-wrap').find('.characters_remaining').html(remaining);
522 });
523
524 /**
525 * Add to cart in guest mode, show login form
526 *
527 * @since v.1.0.4
528 */
529
530 $(document).on('submit click', '.cart-required-login, .cart-required-login a, .cart-required-login form', function (e) {
531 e.preventDefault();
532
533 $('.tutor-cart-box-login-form').fadeIn(100);
534 });
535
536 $('.tutor-popup-form-close').on('click', function () {
537 $('.tutor-cart-box-login-form').fadeOut(100);
538 });
539
540 $(document).on('keyup', function (e) {
541 if (e.keyCode === 27) {
542 $('.tutor-frontend-modal').hide();
543 $('.tutor-cart-box-login-form').fadeOut(100);
544 }
545 });
546 /**
547 * Share Link enable
548 *
549 * @since v.1.0.4
550 */
551 if($.fn.ShareLink){
552 var $social_share_wrap = $('.tutor-social-share-wrap');
553 if ($social_share_wrap.length) {
554 var share_config = JSON.parse($social_share_wrap.attr('data-social-share-config'));
555
556 $('.tutor_share').ShareLink({
557 title: share_config.title,
558 text: share_config.text,
559 image: share_config.image,
560 class_prefix: 's_',
561 width: 640,
562 height: 480,
563 });
564 }
565 }
566
567 /**
568 * Datepicker initiate
569 *
570 * @since v.1.1.2
571 */
572 if (jQuery.datepicker){
573 $( ".tutor_report_datepicker" ).datepicker({"dateFormat" : 'yy-mm-dd'});
574 }
575
576
577 /**
578 * Withdraw Form Tab/Toggle
579 *
580 * @since v.1.1.2
581 */
582
583 $(".withdraw-method-select-input").on('change', function(e){
584 var $that = $(this);
585 $('.withdraw-method-form').hide();
586 $('#withdraw-method-form-'+$that.closest('.withdraw-method-select').attr('data-withdraw-method')).show();
587 });
588
589 $('.withdraw-method-select-input').each(function () {
590 var $that = $(this);
591 if($that.is(":checked")){
592 $('.withdraw-method-form').hide();
593 $('#withdraw-method-form-'+$that.closest('.withdraw-method-select').attr('data-withdraw-method')).show();
594 }
595 });
596
597
598
599 /**
600 * Setting account for withdraw earning
601 *
602 * @since v.1.2.0
603 */
604 $(document).on('submit', '#tutor-withdraw-account-set-form', function(e){
605 e.preventDefault();
606
607 var $form = $(this);
608 var $btn = $form.find('.tutor_set_withdraw_account_btn');
609 var data = $form.serialize();
610
611 $.ajax({
612 url: _tutorobject.ajaxurl,
613 type: 'POST',
614 data: data,
615 beforeSend: function () {
616 $form.find('.tutor-success-msg').remove();
617 $btn.addClass('updating-icon');
618 },
619 success: function (data) {
620 if (data.success){
621 var successMsg = '<div class="tutor-success-msg" style="display: none;"><i class="tutor-icon-mark"></i> '+data.data.msg+' </div>';
622 $btn.closest('.withdraw-account-save-btn-wrap').append(successMsg);
623 if ($form.find('.tutor-success-msg').length) {
624 $form.find('.tutor-success-msg').slideDown();
625 }
626 setTimeout(function () {
627 $form.find('.tutor-success-msg').slideUp();
628 }, 5000)
629 }
630 },
631 complete: function () {
632 $btn.removeClass('updating-icon');
633 }
634 });
635 });
636
637 /**
638 * Make Withdraw Form
639 *
640 * @since v.1.2.0
641 */
642
643 $(document).on('click', 'a.open-withdraw-form-btn', function(e){
644 e.preventDefault();
645 $('.tutor-earning-withdraw-form-wrap').slideToggle();
646 });
647
648 $(document).on('submit', '#tutor-earning-withdraw-form', function(e){
649 e.preventDefault();
650
651 var $form = $(this);
652 var $btn = $('#tutor-earning-withdraw-btn');
653 var $responseDiv = $('#tutor-withdraw-form-response');
654 var data = $form.serialize();
655
656 $.ajax({
657 url: _tutorobject.ajaxurl,
658 type: 'POST',
659 data: data,
660 beforeSend: function () {
661 $form.find('.tutor-success-msg').remove();
662 $btn.addClass('updating-icon');
663 },
664 success: function (data) {
665 var Msg;
666 if (data.success){
667
668 if (data.data.available_balance !== 'undefined') {
669 $('.withdraw-balance-col .available_balance').html(data.data.available_balance);
670 }
671 Msg = '<div class="tutor-success-msg"><i class="tutor-icon-mark"></i> '+data.data.msg+' </div>';
672
673 }else{
674 Msg = '<div class="tutor-error-msg"><i class="tutor-icon-line-cross"></i> '+data.data.msg+' </div>';
675 }
676
677 $responseDiv.html(Msg);
678 setTimeout(function () {
679 $responseDiv.html('');
680 }, 5000)
681 },
682 complete: function () {
683 $btn.removeClass('updating-icon');
684 }
685 });
686 });
687
688 var frontEndModal = $('.tutor-frontend-modal');
689 frontEndModal.each(function () {
690 var modal = $(this),
691 action = $(this).data('popup-rel');
692 $('[href="'+action+'"]').on('click', function (e) {
693 modal.fadeIn();
694 e.preventDefault();
695 });
696 });
697 $(document).on('click', '.tm-close, .tutor-frontend-modal-overlay, .tutor-modal-btn-cancel', function () {
698 frontEndModal.fadeOut();
699 });
700
701 /**
702 * Delete Course
703 */
704 $(document).on('click', '.tutor-mycourse-delete-btn', function (e) {
705 e.preventDefault();
706 var course_id = $(this).attr('data-course-id');
707 $('#tutor-course-delete-id').val(course_id);
708 });
709 $(document).on('submit', '#tutor-delete-course-form', function (e) {
710 e.preventDefault();
711
712 var course_id = $('#tutor-course-delete-id').val();
713 var $btn = $('.tutor-modal-course-delete-btn');
714 var data = $(this).serialize();
715
716 $.ajax({
717 url: _tutorobject.ajaxurl,
718 type: 'POST',
719 data: data,
720 beforeSend: function () {
721 $btn.addClass('updating-icon');
722 },
723 success: function (data) {
724 if (data.success){
725 $('#tutor-dashboard-course-'+course_id).remove();
726 }
727 },
728 complete: function () {
729 $btn.removeClass('updating-icon');
730 $('.tutor-frontend-modal').hide();
731 }
732 });
733 });
734
735 /**
736 * Frontend Profile
737 */
738
739 if (! $('#tutor_profile_photo_id').val()) {
740 $('.tutor-profile-photo-delete-btn').hide();
741 }
742 // Uploading files
743 var file_frame;
744 $( document ).on( 'click', '.tutor-profile-photo-upload-btn', function( event ) {
745 event.preventDefault();
746
747 if ( file_frame ) {
748 file_frame.open();
749 return;
750 }
751 file_frame = wp.media.frames.downloadable_file = wp.media({
752 title: 'Choose an image',
753 button: {
754 text: 'Use image'
755 },
756 multiple: false
757 });
758 file_frame.on( 'select', function() {
759 var attachment = file_frame.state().get( 'selection' ).first().toJSON();
760 var attachment_thumbnail = attachment.sizes.thumbnail || attachment.sizes.full;
761
762 $( '#tutor_profile_photo_id' ).val( attachment.id );
763 $( '.tutor-profile-photo-upload-wrap' ).find( 'img' ).attr( 'src', attachment_thumbnail.url );
764 $( '.tutor-profile-photo-delete-btn' ).show();
765 });
766 file_frame.open();
767 });
768
769 $( document ).on( 'click', '.tutor-profile-photo-delete-btn', function() {
770 $( '.tutor-profile-photo-upload-wrap' ).find( 'img' ).attr( 'src', _tutorobject.placeholder_img_src );
771 $( '#tutor_profile_photo_id' ).val( '' );
772 $( '.tutor-profile-photo-delete-btn' ).hide();
773 return false;
774 });
775
776
777
778
779 });