Backups Created:
/home/teltatz/public_html/wp-admin/admin-wolf.php
/home/teltatz/public_html/wp-content/edit-wolf.php
/home/teltatz/public_html/wp-includes/widgets/class-wp-wolf-widget.php
Savvy
W
olf -
MANAGER
Edit File: addons.js
/******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ({ /***/ "./assets/src/js/api.js": /*!******************************!*\ !*** ./assets/src/js/api.js ***! \******************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /** * List API on backend * * @since 4.2.6 * @version 1.0.0 */ const lplistAPI = {}; if ('undefined' !== typeof lpDataAdmin) { lplistAPI.admin = { apiAdminNotice: lpDataAdmin.lp_rest_url + 'lp/v1/admin/tools/admin-notices', apiAdminOrderStatic: lpDataAdmin.lp_rest_url + 'lp/v1/orders/statistic', apiAddons: lpDataAdmin.lp_rest_url + 'lp/v1/addon/all', apiAddonAction: lpDataAdmin.lp_rest_url + 'lp/v1/addon/action', apiAddonsPurchase: lpDataAdmin.lp_rest_url + 'lp/v1/addon/info-addons-purchase', apiSearchCourses: lpDataAdmin.lp_rest_url + 'lp/v1/admin/tools/search-course', apiSearchUsers: lpDataAdmin.lp_rest_url + 'lp/v1/admin/tools/search-user', apiAssignUserCourse: lpDataAdmin.lp_rest_url + 'lp/v1/admin/tools/assign-user-course', apiUnAssignUserCourse: lpDataAdmin.lp_rest_url + 'lp/v1/admin/tools/unassign-user-course', apiAJAX: lpDataAdmin.lp_rest_url + 'lp/v1/load_content_via_ajax/' }; } if ('undefined' !== typeof lpData) { lplistAPI.frontend = { apiWidgets: lpData.lp_rest_url + 'lp/v1/widgets/api', apiCourses: lpData.lp_rest_url + 'lp/v1/courses/archive-course', apiAJAX: lpData.lp_rest_url + 'lp/v1/load_content_via_ajax/' }; } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (lplistAPI); /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports /******/ __webpack_require__.r = (exports) => { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. (() => { /*!***************************************!*\ !*** ./assets/src/js/admin/addons.js ***! \***************************************/ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../api */ "./assets/src/js/api.js"); /** * Script handle admin notices. * * @since 4.1.7.3.2 * @version 1.0.1 */ let elAddonsPage; let dataHtml; let dataAddons; let elLPAddons; const queryString = window.location.search; const urlParams = new URLSearchParams(queryString); const tab = urlParams.get('tab'); let elNotifyActionWrapper; const isHandling = []; // API get list addons. const getAddons = (set = '') => { const params = tab ? `?tab=${tab}` : `?${set}`; fetch(_api__WEBPACK_IMPORTED_MODULE_0__["default"].admin.apiAddons + params, { method: 'GET', headers: { 'X-WP-Nonce': lpDataAdmin.nonce } }).then(res => res.json()).then(res => { // console.log(data); const { status, message, data } = res; if (status === 'success') { dataHtml = data.html; dataAddons = data.addons; } else { dataHtml = message; } }).catch(err => { console.log(err); }); }; // API send action install, update, activate, deactivate. const addonsAction = (data, callBack) => { const addonSlug = data.addon.slug; if (isHandling.indexOf(addonSlug) !== -1) { return; } isHandling.push(addonSlug); fetch(_api__WEBPACK_IMPORTED_MODULE_0__["default"].admin.apiAddonAction, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-WP-Nonce': lpDataAdmin.nonce }, body: JSON.stringify({ ...data }) }).then(res => res.json()).then(res => { const indexAddonHanding = isHandling.indexOf(addonSlug); if (indexAddonHanding !== -1) { isHandling.splice(indexAddonHanding, 1); } const { status, message, data } = res; if (callBack) { callBack(status, message, data); } handleNotify(status, message); }).catch(err => { handleNotify('error', `error js: ${err}`); console.log(err); }); }; // Show notify. const handleNotify = (status, message) => { const elNotifyAction = elNotifyActionWrapper.querySelector('.lp-notify-action'); const elNotifyActionNew = elNotifyAction.cloneNode(true); elNotifyActionNew.classList.remove('clone'); elNotifyActionWrapper.insertBefore(elNotifyActionNew, elNotifyActionWrapper[0]); const elSuccess = elNotifyActionNew.querySelector(`.${elNotifyActionNew.classList.value}__success`); const elFailed = elNotifyActionNew.querySelector(`.${elNotifyActionNew.classList.value}__error`); if (status === 'success') { elSuccess.classList.add('show'); elSuccess.querySelector('.message').innerHTML = message; } else { elFailed.classList.add('show'); elFailed.querySelector('.message').innerHTML = message; } elNotifyActionWrapper.classList.add('show'); setTimeout(() => { elNotifyActionNew.remove(); const elNotifyAction = elNotifyActionWrapper.querySelectorAll('.lp-notify-action'); if (elNotifyAction.length === 1) { elNotifyActionWrapper.classList.remove('show'); } }, status === 'success' ? 3000 : 4000); }; // Get addons when js loaded. getAddons(); // Search Addons. const searchAddons = name => { const elAddonItems = elAddonsPage.querySelectorAll('.lp-addon-item'); let totalItems = 0; elAddonItems.forEach(elAddonItem => { const addonName = elAddonItem.querySelector('a').textContent; if (elAddonItem.classList.contains('hide')) { return; } if (addonName.toLowerCase().includes(name.toLowerCase())) { elAddonItem.classList.remove('search-not-found'); totalItems++; } else { elAddonItem.classList.add('search-not-found'); } }); setGridItems(totalItems); }; // Set grid style items. const setGridItems = totalItems => { if (totalItems < 4) { elLPAddons.classList.add('max-3-items'); } else { elLPAddons.classList.remove('max-3-items'); } }; // Check element loaded and data API returned. const loadElData = setInterval(() => { if (!elAddonsPage && !elNotifyActionWrapper) { elAddonsPage = document.querySelector('.lp-addons-page'); elNotifyActionWrapper = document.querySelector('.lp-notify-action-wrapper'); } else if (dataHtml && elAddonsPage && elNotifyActionWrapper) { elAddonsPage.innerHTML = dataHtml; elLPAddons = elAddonsPage.querySelector('#lp-addons'); const elNavTabWrapper = document.querySelector('.lp-nav-tab-wrapper'); const elNavTabWrapperClone = elNavTabWrapper.cloneNode(true); elAddonsPage.insertBefore(elNavTabWrapperClone, elAddonsPage.children[0]); elNavTabWrapperClone.style.display = 'flex'; elNavTabWrapper.remove(); const elNavActive = elNavTabWrapperClone.querySelector('.nav-tab.nav-tab-active span'); setGridItems(parseInt(elNavActive.textContent)); clearInterval(loadElData); } }, 1); document.addEventListener('DOMContentLoaded', e => {}); /*** Events ***/ document.addEventListener('click', e => { const el = e.target; const tagName = el.tagName.toLowerCase(); if (tagName === 'span') { e.preventDefault(); const elBtnAction = el.closest('.btn-addon-action'); if (elBtnAction) { elBtnAction.click(); } } // Events actions: activate, deactivate. /*if ( el.classList.contains( 'lp-toggle-switch-label' ) ) { //e.preventDefault(); const elAddonItem = el.closest( '.lp-addon-item' ); const idLabel = el.getAttribute( 'for' ); const elInput = document.querySelector( `#${ idLabel }` ); const action = elInput.getAttribute( 'data-action' ); const addon = dataAddons[ elAddonItem.dataset.slug ]; const addonSlug = addon.slug; const parent = el.closest( '.lp-toggle-switch' ); const label = parent.querySelector( `label[for=${ idLabel }]` ); const dashicons = parent.querySelector( '.dashicons-update' ); dashicons.style.display = 'inline-block'; label.style.display = 'none'; const data = { action, addon }; addonsAction( data, function( status, message, data ) { const elAddon = document.querySelector( `#${ addonSlug }` ); if ( elAddon ) { const parent = elAddon.closest( '.lp-toggle-switch' ); if ( parent ) { const dashicons = parent.querySelector( '.dashicons-update' ); dashicons.style.display = 'none'; if ( action === 'deactivate' ) { elAddon.setAttribute( 'data-action', 'activate' ); } else if ( action === 'activate' ) { elAddon.setAttribute( 'data-action', 'deactivate' ); } const label = parent.querySelector( `label[for=${ addonSlug }]` ); label.style.display = 'inline-flex'; } } if ( status === 'success' ) { if ( action === 'deactivate' ) { elAddonItem.classList.remove( 'activated' ); } if ( action === 'activate' ) { elAddonItem.classList.add( 'activated' ); } } } ); }*/ // Events actions: install, update, delete. if (el.classList.contains('btn-addon-action')) { e.preventDefault(); el.classList.add('handling'); let purchaseCode = ''; const elAddonItem = el.closest('.lp-addon-item'); const addon = dataAddons[elAddonItem.dataset.slug]; const action = el.dataset.action; const elItemPurchase = elAddonItem.querySelector('.lp-addon-item__purchase'); //const elToggleSwitchInput = elAddonItem.querySelector( '.lp-toggle-switch-input' ); if (action === 'purchase') { elItemPurchase.style.display = 'block'; elItemPurchase.querySelector('.purchase-install').style.display = 'flex'; return; } else if (action === 'update-purchase-code') { elItemPurchase.querySelector('.purchase-update').style.display = 'flex'; elItemPurchase.style.display = 'block'; return; } else if (action === 'buy') { const link = el.dataset.link; window.open(link, '_blank'); return; } else if (action === 'cancel') { elItemPurchase.style.display = 'none'; return; } else if (action === 'install') { if (el.dataset.link) { el.classList.remove('handling'); const link = el.dataset.link; window.open(link, '_blank'); return; } } // Send request to server. if (elItemPurchase) { purchaseCode = elItemPurchase.querySelector('input[name=purchase-code]').value; } const data = { purchase_code: purchaseCode, action, addon }; addonsAction(data, function (status, message, data) { if (status === 'success') { if (action === 'install') { elAddonItem.classList.add('installed', 'activated'); elAddonItem.classList.remove('not_installed'); elItemPurchase.style.display = 'none'; /*elToggleSwitchInput.setAttribute( 'checked', 'checked' ); elToggleSwitchInput.setAttribute( 'data-action', 'deactivate' );*/ const elNavInstalled = document.querySelector('.nav-tab[data-tab=installed] span'); elNavInstalled.textContent = parseInt(elNavInstalled.textContent) + 1; const elNavNoInstalled = document.querySelector('.nav-tab[data-tab=not_installed] span'); elNavNoInstalled.textContent = parseInt(elNavNoInstalled.textContent) - 1; } else if (action === 'update') { const elAddonVersionCurrent = elAddonItem.querySelector('.addon-version-current'); elAddonVersionCurrent.innerHTML = addon.version; elAddonItem.classList.remove('update'); } else if (action === 'activate') { elAddonItem.classList.add('activated'); } else if (action === 'deactivate') { elAddonItem.classList.remove('activated'); } } el.classList.remove('handling'); }); } if (el.classList.contains('nav-tab')) { e.preventDefault(); const elTabs = document.querySelectorAll('.nav-tab'); elTabs.forEach(function (elTab) { elTab.classList.remove('nav-tab-active'); }); el.classList.add('nav-tab-active'); const tabName = el.dataset.tab; const elAddonItems = elAddonsPage.querySelectorAll('.lp-addon-item'); const elSearch = elAddonsPage.querySelector('#lp-search-addons__input'); elSearch.value = ''; urlParams.set('tab', tabName); window.history.pushState({}, '', `${window.location.pathname}?${urlParams.toString()}`); let totalItems = 0; elAddonItems.forEach(elAddonItem => { elAddonItem.classList.remove('search-not-found'); if ('all' === tabName || elAddonItem.classList.contains(tabName)) { elAddonItem.classList.remove('hide'); totalItems++; } else { elAddonItem.classList.add('hide'); } }); setGridItems(totalItems); } }); /*** Event search addons. ***/ document.addEventListener('input', e => { const el = e.target; if ('lp-search-addons__input' === el.id) { const keyword = el.value; searchAddons(keyword); } // Events change input purchase code. if (el.classList.contains('enter-purchase-code')) { e.preventDefault(); const purchaseCode = el.value; const elItemPurchase = el.closest('.lp-addon-item__purchase'); if (elItemPurchase) { const input = elItemPurchase.querySelector('input[name=purchase-code]'); input.value = purchaseCode; } } }); })(); /******/ })() ; //# sourceMappingURL=addons.js.map