PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.9
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.9
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 4.1.7.3.1 4.1.7.3.2 All 140 releases
← All changes | assets/js/dist/admin/admin-order.js +142 -7 4.4.3 → 4.4.9 View file →
@@ -891,12 +891,9 @@
891 891 let lp_rest_url;
892 892 if ('undefined' !== typeof lpDataAdmin) {
893 893 lp_rest_url = lpDataAdmin.lp_rest_url;
894 894 lplistAPI.admin = {
895 - apiAdminNotice: lp_rest_url + 'lp/v1/admin/tools/admin-notices',
896 - apiAddons: lp_rest_url + 'lp/v1/addon/all',
897 - apiAddonAction: lp_rest_url + 'lp/v1/addon/action-n',
898 - apiAddonsPurchase: lp_rest_url + 'lp/v1/addon/info-addons-purchase',
895 + // apiAdminNotice: lp_rest_url + 'lp/v1/admin/tools/admin-notices',
899 896 apiSearchCourses: lp_rest_url + 'lp/v1/admin/tools/search-course',
900 897 apiSearchUsers: lp_rest_url + 'lp/v1/admin/tools/search-user',
901 898 apiAssignUserCourse: lp_rest_url + 'lp/v1/admin/tools/assign-user-course',
902 899 apiUnAssignUserCourse: lp_rest_url + 'lp/v1/admin/tools/unassign-user-course'
@@ -986,8 +983,9 @@
986 983 __webpack_require__.r(__webpack_exports__);
987 984 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
988 985 /* harmony export */ debounce: () => (/* binding */ debounce),
989 986 /* harmony export */ eventHandlers: () => (/* binding */ eventHandlers),
987 +/* harmony export */ fullScreenView: () => (/* binding */ fullScreenView),
990 988 /* harmony export */ getDataOfForm: () => (/* binding */ getDataOfForm),
991 989 /* harmony export */ getFieldKeysOfForm: () => (/* binding */ getFieldKeysOfForm),
992 990 /* harmony export */ listenElementCreated: () => (/* binding */ listenElementCreated),
993 991 /* harmony export */ listenElementViewed: () => (/* binding */ listenElementViewed),
@@ -999,9 +997,10 @@
999 997 /* harmony export */ lpOnElementReady: () => (/* binding */ lpOnElementReady),
1000 998 /* harmony export */ lpSetLoadingEl: () => (/* binding */ lpSetLoadingEl),
1001 999 /* harmony export */ lpShowHideEl: () => (/* binding */ lpShowHideEl),
1002 1000 /* harmony export */ mergeDataWithDatForm: () => (/* binding */ mergeDataWithDatForm),
1003 -/* harmony export */ toggleCollapse: () => (/* binding */ toggleCollapse)
1001 +/* harmony export */ toggleCollapse: () => (/* binding */ toggleCollapse),
1002 +/* harmony export */ toggleEnable: () => (/* binding */ toggleEnable)
1004 1003 /* harmony export */ });
1005 1004 /**
1006 1005 * Utils functions
1007 1006 *
@@ -1008,9 +1007,9 @@
1008 1007 * @param url
1009 1008 * @param data
1010 1009 * @param functions
1011 1010 * @since 4.2.5.1
1012 - * @version 1.0.6
1011 + * @version 1.0.7
1013 1012 */
1014 1013 const lpClassName = {
1015 1014 hidden: 'lp-hidden',
1016 1015 loading: 'loading',
@@ -1015,9 +1014,12 @@
1015 1014 hidden: 'lp-hidden',
1016 1015 loading: 'loading',
1017 1016 elCollapse: 'lp-collapse',
1018 1017 elSectionToggle: '.lp-section-toggle',
1019 - elTriggerToggle: '.lp-trigger-toggle'
1018 + elTriggerToggle: '.lp-trigger-toggle',
1019 + elBtnFullScreen: '.lp-btn-full-screen-view',
1020 + elFullScreen: 'lp-full-screen-view',
1021 + elBtnFullScreenClose: 'lp-full-screen-view__close'
1020 1022 };
1021 1023 const lpFetchAPI = (url, data = {}, functions = {}) => {
1022 1024 if ('function' === typeof functions.before) {
1023 1025 functions.before();
@@ -1333,8 +1335,141 @@
1333 1335 return args => {
1334 1336 clearTimeout(timer);
1335 1337 timer = setTimeout(() => func(args), wait);
1336 1338 };
1339 +};
1340 +
1341 +/**
1342 + * Initialize lp-toggle-enable components.
1343 + *
1344 + * Finds all `.lp-toggle-enable` elements and wires up toggle behavior.
1345 + * Reads initial state from `data-enabled` attribute ("true"/"false").
1346 + * Calls `data-on-toggle` callback (if provided via options) on state change.
1347 + *
1348 + * HTML structure:
1349 + * <label class="lp-toggle-enable" data-enabled="true">
1350 + * <input type="checkbox" class="lp-toggle-enable__input" />
1351 + * <span class="lp-toggle-enable__track"></span>
1352 + * </label>
1353 + *
1354 + * @param {string} selector CSS selector for toggle elements (default: '.lp-toggle-enable')
1355 + * @param {Function} onToggle Optional callback( el, isEnabled ) called on state change
1356 + * @since 4.4.5
1357 + * @version 1.0.0
1358 + */
1359 +window.lpToggleEnableInit = 0;
1360 +const toggleEnable = (onToggle = null) => {
1361 + if (window.lpToggleEnableInit) {
1362 + return;
1363 + }
1364 + window.lpToggleEnableInit = 1;
1365 + const selector = '.lp-toggle-enable';
1366 + const updateUI = (toggle, isEnabled) => {
1367 + toggle.classList.toggle('is-enabled', isEnabled);
1368 + const input = toggle.querySelector('.lp-toggle-enable__input');
1369 + if (input) {
1370 + input.checked = isEnabled;
1371 + input.value = isEnabled ? '1' : '0';
1372 + }
1373 + };
1374 +
1375 + // Delegate click handling via eventHandlers.
1376 + eventHandlers('click', [{
1377 + selector,
1378 + callBack: args => {
1379 + const {
1380 + e,
1381 + target
1382 + } = args;
1383 + const toggle = target.closest(selector);
1384 + if (!toggle || toggle.classList.contains('is-disabled')) {
1385 + return;
1386 + }
1387 + e.preventDefault();
1388 + const isEnabled = !toggle.classList.contains('is-enabled');
1389 + updateUI(toggle, isEnabled);
1390 + if ('function' === typeof onToggle) {
1391 + onToggle(toggle, isEnabled);
1392 + }
1393 + }
1394 + }]);
1395 +};
1396 +
1397 +/**
1398 + * Initialize custom fullscreen view buttons.
1399 + *
1400 + * Delegates clicks on `.lp-btn-full-screen-view` buttons to
1401 + * `lpToggleFullscreenView`. Reads the `data-target` attribute to find the
1402 + * target element. Falls back to the button's parent element when
1403 + * `data-target` is not provided.
1404 + *
1405 + * @since 4.4.5
1406 + * @version 1.0.0
1407 + */
1408 +window.lpFullScreenViewInit = 0;
1409 +const fullScreenView = () => {
1410 + if (window.lpFullScreenViewInit) {
1411 + return;
1412 + }
1413 + window.lpFullScreenViewInit = 1;
1414 + let lastScrollY = 0;
1415 + const lpToggleFullscreenView = (elTarget, elBtnFullScreen = null) => {
1416 + const isFullscreen = elTarget.classList.contains(lpClassName.elFullScreen);
1417 + if (isFullscreen) {
1418 + elTarget.classList.remove(lpClassName.elFullScreen);
1419 + document.documentElement.classList.remove('lp-full-screen-active');
1420 + window.scrollTo(0, lastScrollY);
1421 + } else {
1422 + lastScrollY = window.scrollY;
1423 + elTarget.classList.add(lpClassName.elFullScreen);
1424 + document.documentElement.classList.add('lp-full-screen-active');
1425 + }
1426 + if (!isFullscreen) {
1427 + if (!elTarget.querySelector(`.${lpClassName.elBtnFullScreenClose}`)) {
1428 + const closeButton = document.createElement('button');
1429 + closeButton.type = 'button';
1430 + closeButton.className = lpClassName.elBtnFullScreenClose;
1431 + closeButton.setAttribute('aria-label', 'Close');
1432 + closeButton.innerHTML = lpData.i18n.closeButtonFullScreen || 'Close &times;';
1433 + closeButton.addEventListener('click', e => {
1434 + e.preventDefault();
1435 + lpToggleFullscreenView(elTarget);
1436 + });
1437 + elTarget.appendChild(closeButton);
1438 + }
1439 + } else {
1440 + const closeButton = elTarget.querySelector(`.${lpClassName.elBtnFullScreenClose}`);
1441 + if (closeButton) {
1442 + closeButton.remove();
1443 + }
1444 + }
1445 + };
1446 + eventHandlers('click', [{
1447 + selector: lpClassName.elBtnFullScreen,
1448 + callBack: args => {
1449 + const {
1450 + e,
1451 + target
1452 + } = args;
1453 + const elBtnFullScreen = target.closest(lpClassName.elBtnFullScreen);
1454 + if (!elBtnFullScreen) {
1455 + console.log('No full screen button found');
1456 + return;
1457 + }
1458 + e.preventDefault();
1459 + let elTarget = null;
1460 + const targetSelector = elBtnFullScreen.dataset.targetFullscreen;
1461 + console.log(targetSelector);
1462 + if (targetSelector) {
1463 + elTarget = document.querySelector(targetSelector);
1464 + }
1465 + if (!elTarget) {
1466 + console.log('No target element found');
1467 + return;
1468 + }
1469 + lpToggleFullscreenView(elTarget, elBtnFullScreen);
1470 + }
1471 + }]);
1337 1472 };
1338 1473
1339 1474 /***/ },
1340 1475