Files
2026-04-23 04:33:43 +03:30

363 lines
16 KiB
JavaScript

(function($) {
"use strict";
//===== Preloader
$(window).on('load', function(event) {
$('.preloader').delay(500).fadeOut(500);
$('#preloader_two').fadeOut();
$(".upstudy_image_preloader").fadeOut("slow");
});
//===== Header Sticky & Headroom.js
jQuery(function($) {
var header = $(".header-get-sticky");
var topHeader = $(".tpc-header-top-bar");
var topHeaderHeight = topHeader.length ? topHeader.outerHeight() : 0;
var topHeaderHidden = false;
var stickyMode = typeof upstudy_sticky_data !== 'undefined' ? upstudy_sticky_data.mode : 'smart';
if (header.length) {
if (stickyMode === 'always') {
$(window).on("scroll", function() {
var scrollTop = $(this).scrollTop();
if (scrollTop > 100) {
header.addClass("top-header-removed");
} else {
header.removeClass("top-header-removed");
}
if (scrollTop > topHeaderHeight && !topHeaderHidden) {
topHeader.slideUp(200);
topHeaderHidden = true;
} else if (scrollTop === 0 && topHeaderHidden) {
topHeader.slideDown(200);
topHeaderHidden = false;
}
});
} else if (stickyMode === 'smart') {
var options = {
offset: {
up: 100,
down: 200
},
tolerance: {
up: 5,
down: 0
},
classes: {
pinned: "headroom--pinned",
unpinned: "headroom--unpinned",
top: "headroom--top",
notTop: "headroom--not-top"
}
};
var myElement = document.querySelector(".header-get-sticky");
var headroom = new Headroom(myElement, options);
headroom.init();
}
}
});
//===== Login/Register Popup Modal
$('.tpc-login-register-popup-trigger').on('click', function(e) {
e.preventDefault();
$('.upstudy-login-form-popup').toggleClass('login-popup-visible');
$('.upstudy-login-popup-overlay').toggleClass('active');
});
const login_btn = document.querySelector(".login-item");
const register_btn = document.querySelector(".register-item");
$(".register-form").css("display", "none");
$(function() {
$('.login-item, #upstudy-login-form-trigger').on('click', function() {
login_btn.classList.add("active");
$(".register-form").css("display", "none");
if (register_btn.classList.contains("active")) {
register_btn.classList.remove("active");
$(".login-form").removeAttr("style");
}
});
$('.register-item, #upstudy-register-form-trigger').on('click', function() {
register_btn.classList.add("active");
$(".login-form").css("display", "none");
if (login_btn.classList.contains("active")) {
login_btn.classList.remove("active");
$(".register-form").removeAttr("style");
}
});
});
//===== Close Login/Register Modal on Click Outside
$('.upstudy-custom-login-wrapper').on('click', function() {
console.log("clicked");
});
//===== Close Login Modal on Close Button Click
$('.upstudy-login-popup-close .close-trigger').on('click', function() {
$('.upstudy-login-form-popup').removeClass('login-popup-visible');
$('.upstudy-login-popup-overlay').removeClass('active');
});
//===== Course Filter Auto Select
$('.upstudy-course-filtering input').on('change', function() {
$('.upstudy-course-filtering').submit();
});
//===== Course Filter shorting
$(document).ready(function() {
$('.course-orderby').on('change', function() {
$('.course-top-filter').submit();
});
});
//===== Mobile Menu
$('.upstudy-mobile-hamburger-menu').on('click', function() {
$(".upstudy-mobile-hamburger-menu > a").toggleClass('upstudy-mobile-menu-close--active');
$(".upstudy-mobile-menu-nav-wrapper").toggleClass('upstudy-mobile-menu-visible');
$('body').toggleClass('upstudy-mobile-menu-active');
});
$('.upstudy-mobile-menu-close > a').on('click', function() {
$('.upstudy-mobile-hamburger-menu > a').removeClass('upstudy-mobile-menu-close--active');
$('.upstudy-mobile-menu-nav-wrapper').removeClass('upstudy-mobile-menu-visible');
$('body').removeClass('upstudy-mobile-menu-active');
});
$('.upstudy-mobile-menu-overlay').on('click', function() {
$('.upstudy-mobile-hamburger-menu > a').removeClass('upstudy-mobile-menu-close--active');
$('.upstudy-mobile-menu-nav-wrapper').removeClass('upstudy-mobile-menu-visible');
$('body').removeClass('upstudy-mobile-menu-active');
});
//===== Accordion Menu for Mobile
$.fn.extend({
accordionMenu: function(options) {
var defaults = {
speed: 400
}
var options = $.extend(defaults, options);
return this.each(function() {
$(this).addClass('upstudy-mobile-menu-item');
var menuItems = $(this).children('li');
menuItems.find('.upstudy-mobile-menu-item > .upstudy-dropdown-menu').parent().addClass('menu-item-has-children');
$('.upstudy-mobile-menu-item .menu-item-has-children .upstudy-dropdown-menu').hide();
$('.upstudy-mobile-menu-item .menu-item-has-children > a .upstudy-menu-icon').on('click', function(event) {
event.stopPropagation();
event.preventDefault();
$(this).parent().siblings('.upstudy-dropdown-menu').slideToggle(options.speed);
$(this).parent().siblings('.upstudy-mega-menu').slideToggle(options.speed);
});
});
}
});
$('#upstudy-mobile-menu-item').accordionMenu();
//===== Elementor Mobile Menu
$('.upstudy-elementor-mobile-hamburger-menu').on('click', function() {
$(".upstudy-elementor-mobile-hamburger-menu > a").toggleClass('upstudy-mobile-menu-close--active');
$(".upstudy-elementor-mobile-menu-nav-wrapper").toggleClass('upstudy-mobile-menu-visible');
$('body').toggleClass('upstudy-mobile-menu-active');
});
$('.upstudy-elementor-mobile-menu-close > a').on('click', function() {
$('.upstudy-elementor-mobile-hamburger-menu > a').removeClass('upstudy-mobile-menu-close--active');
$('.upstudy-elementor-mobile-menu-nav-wrapper').removeClass('upstudy-mobile-menu-visible');
$('body').removeClass('upstudy-mobile-menu-active');
});
$('.upstudy-elementor-mobile-menu-overlay').on('click', function() {
$('.upstudy-elementor-mobile-hamburger-menu > a').removeClass('upstudy-mobile-menu-close--active');
$('.upstudy-elementor-mobile-menu-nav-wrapper').removeClass('upstudy-mobile-menu-visible');
$('body').removeClass('upstudy-mobile-menu-active');
});
//===== Accordion Menu for Elementor Mobile
$.fn.extend({
accordionMenu: function(options) {
var defaults = {
speed: 400
}
var options = $.extend(defaults, options);
return this.each(function() {
$(this).addClass('upstudy-elementor-mobile-menu-item');
var menuItems = $(this).children('li');
menuItems.find('.upstudy-elementor-mobile-menu-item > .upstudy-dropdown-menu').parent().addClass('menu-item-has-children');
$('.upstudy-elementor-mobile-menu-item .menu-item-has-children .upstudy-dropdown-menu').hide();
$('.upstudy-elementor-mobile-menu-item .menu-item-has-children > a .upstudy-menu-icon').on('click', function(event) {
event.stopPropagation();
event.preventDefault();
$(this).parent().siblings('.upstudy-dropdown-menu').slideToggle(options.speed);
$(this).parent().siblings('.upstudy-mega-menu').slideToggle(options.speed);
});
});
}
});
$('#upstudy-elementor-mobile-menu-item').accordionMenu();
//===== WooCommerce Helper
function upstudy_woocommerce_helper() {
$('.product-over-info ul li.add-to-cart a.add_to_cart_button.ajax_add_to_cart').on("click", function() {
$(this).closest('li').addClass('added_to_cart_item');
});
}
//===== SAL Animation
sal();
//===== Video Popup
$(function() {
$("a.bla-1").YouTubePopUp();
$("a.bla-2").YouTubePopUp({
autoplay: 0
});
});
//===== Search
$('#search').on('click', function() {
$(".upstudy-search-box").fadeIn(600);
});
$('.top-search').on('click', function() {
$(".upstudy-search-box").fadeIn(600);
});
$('.upstudy-closebtn').on('click', function() {
$(".upstudy-search-box").fadeOut(600);
});
//===== Like/Wishlist button for blog page
jQuery(document).ready(function($) {
if (typeof upstudy_like_ajax === 'undefined') {
return; // Exit if wp_localize_script is disabled
}
$('.upstudy-like-btn').on('click', function(event) {
event.preventDefault();
var button = $(this);
var postID = button.data('postid');
$.ajax({
type: 'POST',
url: upstudy_like_ajax.ajaxurl,
data: {
action: 'upstudy_like',
post_id: postID
},
success: function(response) {
if (response.success) {
button.find('.like-count').text(response.data);
}
}
});
});
});
//===== Add to cart animation
jQuery(function($){
if (typeof upstudy_cart_settings === 'undefined') return;
var ajaxUrl = upstudy_cart_settings.ajax_url || '/wp-admin/admin-ajax.php';
var tutorNonce = upstudy_cart_settings.tutor_nonce || '';
var enableAnimation = !!upstudy_cart_settings.cart_animation;
// try refresh via Woo fragments, fallback to our admin-ajax endpoint
function refreshCartFragment() {
// prefer Woo's fragment endpoint
if (typeof wc_cart_fragments_params !== 'undefined' && wc_cart_fragments_params.wc_ajax_url) {
var fragUrl = wc_cart_fragments_params.wc_ajax_url.toString().replace('%%endpoint%%', 'get_refreshed_fragments');
$.post(fragUrl, {}, function(data) {
if (data && data.fragments && data.fragments['#upstudy-cart-fragment']) {
$('#upstudy-cart-fragment').replaceWith(data.fragments['#upstudy-cart-fragment']);
return;
} else {
// fallback
fallbackRefresh();
}
}, 'json').fail(function() {
fallbackRefresh();
});
} else {
fallbackRefresh();
}
}
function fallbackRefresh() {
$.post(ajaxUrl, { action: 'upstudy_refresh_cart_fragment' }, function(res) {
if (res && res.success && res.data && res.data.fragment) {
$('#upstudy-cart-fragment').replaceWith(res.data.fragment);
}
}, 'json');
}
// events to trigger refresh
$(document.body).on('added_to_cart', function(){ // Woo AJAX event
refreshCartFragment();
});
// Tutor LMS events (different versions use different event names)
$(document).on('tutor_after_add_to_cart tutor_course_added_to_cart tutor_added_to_cart', function(){
setTimeout(function(){ refreshCartFragment(); }, 250);
});
// fallback: detect ajaxComplete that looks like add-to-cart
$(document).ajaxComplete(function(event, xhr, settings){
if (!settings || !settings.data) return;
var d = settings.data;
if (typeof d === 'string' && (d.indexOf('add-to-cart') !== -1 || d.indexOf('tutor_add_to_cart') !== -1 || d.indexOf('action=tutor_add_to_cart') !== -1)) {
setTimeout(function(){ refreshCartFragment(); }, 300);
}
});
// Tutor mini-cart item remove (uses Tutor's AJAX action 'tutor_remove_from_cart' if available)
$(document).on('click', '.tutor-mini-cart-remove', function(e){
e.preventDefault();
var $el = $(this);
var courseId = $el.data('course-id');
if (!courseId) return;
$.post(ajaxUrl, {
action: 'tutor_remove_from_cart',
course_id: courseId,
security: tutorNonce
}, function(res){
// if tutor plugin returns success, refresh fragment; else always try to refresh
setTimeout(function(){ refreshCartFragment(); }, 200);
}, 'json');
});
// optional: fly animation from cursor to cart
if (enableAnimation) {
$(document).on('click', '.add_to_cart_button, .single_add_to_cart_button, .tutor-add-to-cart-button, .tutor-course-enroll', function(e){
var $count = $('.upstudy-woo-mini-cart-total-item').first();
if (!$count.length) return;
var qty = $(this).data('quantity') || 1,
$fly = $('<span class="upstudy-fly-number">+' + qty + '</span>').appendTo('body'),
startX = e.clientX,
startY = e.clientY,
cartOffset = $count.offset();
if (!cartOffset) { $fly.remove(); return; }
var endX = cartOffset.left - $(window).scrollLeft(),
endY = cartOffset.top - $(window).scrollTop(),
midX = (startX + endX) / 2,
midY = Math.min(startY, endY) - 120,
duration = 700,
startTime = performance.now();
$fly.css({
position: 'fixed',
left: startX + 'px',
top: startY + 'px',
zIndex: 99999,
color: '#fff',
background: '#0e2a47a3',
padding: '6px 10px',
borderRadius: '20px',
fontSize: '14px',
fontWeight: '700',
pointerEvents: 'none',
transform: 'scale(0.6)',
opacity: 0,
});
function easeInOut(t) { return t < 0.5 ? 2*t*t : -1 + (4-2*t)*t; }
(function animate(time) {
var progress = Math.min((time - startTime) / duration, 1);
var ease = easeInOut(progress);
var x = (1-ease)*(1-ease)*startX + 2*(1-ease)*ease*midX + ease*ease*endX;
var y = (1-ease)*(1-ease)*startY + 2*(1-ease)*ease*midY + ease*ease*endY;
$fly.css({
left: x + 'px',
top: y + 'px',
transform: 'scale(' + (0.6 + 0.4*ease) + ')',
opacity: 1 - 0.95*ease
});
if (progress < 1) {
requestAnimationFrame(animate);
} else {
$fly.remove();
}
})(performance.now());
});
}
// initial refresh (in case counts differ)
// setTimeout to allow WC session initialization
setTimeout(function(){ refreshCartFragment(); }, 300);
});
})(jQuery);