PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.10
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.10
4.4.10 4.4.9.1 4.4.9 4.4.8 4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0 4.3.9.1 4.3.9 4.3.8 4.3.7 4.1.6.9 4.1.6.9.1 4.1.6.9.2 4.1.6.9.3 4.1.6.9.4 4.1.7 4.1.7.1 4.1.7.2 4.1.7.3 All 142 releases
← All changes | assets/js/dist/blocks/course-item-template.js +142 -7 4.4.1 → 4.4.10 View file →
@@ -324,12 +324,9 @@
324 324 let lp_rest_url;
325 325 if ('undefined' !== typeof lpDataAdmin) {
326 326 lp_rest_url = lpDataAdmin.lp_rest_url;
327 327 lplistAPI.admin = {
328 - apiAdminNotice: lp_rest_url + 'lp/v1/admin/tools/admin-notices',
329 - apiAddons: lp_rest_url + 'lp/v1/addon/all',
330 - apiAddonAction: lp_rest_url + 'lp/v1/addon/action-n',
331 - apiAddonsPurchase: lp_rest_url + 'lp/v1/addon/info-addons-purchase',
328 + // apiAdminNotice: lp_rest_url + 'lp/v1/admin/tools/admin-notices',
332 329 apiSearchCourses: lp_rest_url + 'lp/v1/admin/tools/search-course',
333 330 apiSearchUsers: lp_rest_url + 'lp/v1/admin/tools/search-user',
334 331 apiAssignUserCourse: lp_rest_url + 'lp/v1/admin/tools/assign-user-course',
335 332 apiUnAssignUserCourse: lp_rest_url + 'lp/v1/admin/tools/unassign-user-course'
@@ -365,8 +362,9 @@
365 362 __webpack_require__.r(__webpack_exports__);
366 363 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
367 364 /* harmony export */ debounce: () => (/* binding */ debounce),
368 365 /* harmony export */ eventHandlers: () => (/* binding */ eventHandlers),
366 +/* harmony export */ fullScreenView: () => (/* binding */ fullScreenView),
369 367 /* harmony export */ getDataOfForm: () => (/* binding */ getDataOfForm),
370 368 /* harmony export */ getFieldKeysOfForm: () => (/* binding */ getFieldKeysOfForm),
371 369 /* harmony export */ listenElementCreated: () => (/* binding */ listenElementCreated),
372 370 /* harmony export */ listenElementViewed: () => (/* binding */ listenElementViewed),
@@ -378,9 +376,10 @@
378 376 /* harmony export */ lpOnElementReady: () => (/* binding */ lpOnElementReady),
379 377 /* harmony export */ lpSetLoadingEl: () => (/* binding */ lpSetLoadingEl),
380 378 /* harmony export */ lpShowHideEl: () => (/* binding */ lpShowHideEl),
381 379 /* harmony export */ mergeDataWithDatForm: () => (/* binding */ mergeDataWithDatForm),
382 -/* harmony export */ toggleCollapse: () => (/* binding */ toggleCollapse)
380 +/* harmony export */ toggleCollapse: () => (/* binding */ toggleCollapse),
381 +/* harmony export */ toggleEnable: () => (/* binding */ toggleEnable)
383 382 /* harmony export */ });
384 383 /**
385 384 * Utils functions
386 385 *
@@ -387,9 +386,9 @@
387 386 * @param url
388 387 * @param data
389 388 * @param functions
390 389 * @since 4.2.5.1
391 - * @version 1.0.6
390 + * @version 1.0.7
392 391 */
393 392 const lpClassName = {
394 393 hidden: 'lp-hidden',
395 394 loading: 'loading',
@@ -394,9 +393,12 @@
394 393 hidden: 'lp-hidden',
395 394 loading: 'loading',
396 395 elCollapse: 'lp-collapse',
397 396 elSectionToggle: '.lp-section-toggle',
398 - elTriggerToggle: '.lp-trigger-toggle'
397 + elTriggerToggle: '.lp-trigger-toggle',
398 + elBtnFullScreen: '.lp-btn-full-screen-view',
399 + elFullScreen: 'lp-full-screen-view',
400 + elBtnFullScreenClose: 'lp-full-screen-view__close'
399 401 };
400 402 const lpFetchAPI = (url, data = {}, functions = {}) => {
401 403 if ('function' === typeof functions.before) {
402 404 functions.before();
@@ -712,8 +714,141 @@
712 714 return args => {
713 715 clearTimeout(timer);
714 716 timer = setTimeout(() => func(args), wait);
715 717 };
718 +};
719 +
720 +/**
721 + * Initialize lp-toggle-enable components.
722 + *
723 + * Finds all `.lp-toggle-enable` elements and wires up toggle behavior.
724 + * Reads initial state from `data-enabled` attribute ("true"/"false").
725 + * Calls `data-on-toggle` callback (if provided via options) on state change.
726 + *
727 + * HTML structure:
728 + * <label class="lp-toggle-enable" data-enabled="true">
729 + * <input type="checkbox" class="lp-toggle-enable__input" />
730 + * <span class="lp-toggle-enable__track"></span>
731 + * </label>
732 + *
733 + * @param {string} selector CSS selector for toggle elements (default: '.lp-toggle-enable')
734 + * @param {Function} onToggle Optional callback( el, isEnabled ) called on state change
735 + * @since 4.4.5
736 + * @version 1.0.0
737 + */
738 +window.lpToggleEnableInit = 0;
739 +const toggleEnable = (onToggle = null) => {
740 + if (window.lpToggleEnableInit) {
741 + return;
742 + }
743 + window.lpToggleEnableInit = 1;
744 + const selector = '.lp-toggle-enable';
745 + const updateUI = (toggle, isEnabled) => {
746 + toggle.classList.toggle('is-enabled', isEnabled);
747 + const input = toggle.querySelector('.lp-toggle-enable__input');
748 + if (input) {
749 + input.checked = isEnabled;
750 + input.value = isEnabled ? '1' : '0';
751 + }
752 + };
753 +
754 + // Delegate click handling via eventHandlers.
755 + eventHandlers('click', [{
756 + selector,
757 + callBack: args => {
758 + const {
759 + e,
760 + target
761 + } = args;
762 + const toggle = target.closest(selector);
763 + if (!toggle || toggle.classList.contains('is-disabled')) {
764 + return;
765 + }
766 + e.preventDefault();
767 + const isEnabled = !toggle.classList.contains('is-enabled');
768 + updateUI(toggle, isEnabled);
769 + if ('function' === typeof onToggle) {
770 + onToggle(toggle, isEnabled);
771 + }
772 + }
773 + }]);
774 +};
775 +
776 +/**
777 + * Initialize custom fullscreen view buttons.
778 + *
779 + * Delegates clicks on `.lp-btn-full-screen-view` buttons to
780 + * `lpToggleFullscreenView`. Reads the `data-target` attribute to find the
781 + * target element. Falls back to the button's parent element when
782 + * `data-target` is not provided.
783 + *
784 + * @since 4.4.5
785 + * @version 1.0.0
786 + */
787 +window.lpFullScreenViewInit = 0;
788 +const fullScreenView = () => {
789 + if (window.lpFullScreenViewInit) {
790 + return;
791 + }
792 + window.lpFullScreenViewInit = 1;
793 + let lastScrollY = 0;
794 + const lpToggleFullscreenView = (elTarget, elBtnFullScreen = null) => {
795 + const isFullscreen = elTarget.classList.contains(lpClassName.elFullScreen);
796 + if (isFullscreen) {
797 + elTarget.classList.remove(lpClassName.elFullScreen);
798 + document.documentElement.classList.remove('lp-full-screen-active');
799 + window.scrollTo(0, lastScrollY);
800 + } else {
801 + lastScrollY = window.scrollY;
802 + elTarget.classList.add(lpClassName.elFullScreen);
803 + document.documentElement.classList.add('lp-full-screen-active');
804 + }
805 + if (!isFullscreen) {
806 + if (!elTarget.querySelector(`.${lpClassName.elBtnFullScreenClose}`)) {
807 + const closeButton = document.createElement('button');
808 + closeButton.type = 'button';
809 + closeButton.className = lpClassName.elBtnFullScreenClose;
810 + closeButton.setAttribute('aria-label', 'Close');
811 + closeButton.innerHTML = lpData.i18n.closeButtonFullScreen || 'Close &times;';
812 + closeButton.addEventListener('click', e => {
813 + e.preventDefault();
814 + lpToggleFullscreenView(elTarget);
815 + });
816 + elTarget.appendChild(closeButton);
817 + }
818 + } else {
819 + const closeButton = elTarget.querySelector(`.${lpClassName.elBtnFullScreenClose}`);
820 + if (closeButton) {
821 + closeButton.remove();
822 + }
823 + }
824 + };
825 + eventHandlers('click', [{
826 + selector: lpClassName.elBtnFullScreen,
827 + callBack: args => {
828 + const {
829 + e,
830 + target
831 + } = args;
832 + const elBtnFullScreen = target.closest(lpClassName.elBtnFullScreen);
833 + if (!elBtnFullScreen) {
834 + console.log('No full screen button found');
835 + return;
836 + }
837 + e.preventDefault();
838 + let elTarget = null;
839 + const targetSelector = elBtnFullScreen.dataset.targetFullscreen;
840 + console.log(targetSelector);
841 + if (targetSelector) {
842 + elTarget = document.querySelector(targetSelector);
843 + }
844 + if (!elTarget) {
845 + console.log('No target element found');
846 + return;
847 + }
848 + lpToggleFullscreenView(elTarget, elBtnFullScreen);
849 + }
850 + }]);
716 851 };
717 852
718 853 /***/ },
719 854