This commit is contained in:
2025-04-01 00:38:54 +02:00
parent d4d4c0c09d
commit 87da06293a
22351 changed files with 5168854 additions and 7538 deletions

View File

@@ -0,0 +1,60 @@
document.addEventListener("DOMContentLoaded", () => {
initCodeMirror();
initTooltips();
function initCodeMirror() {
if (typeof CodeMirror !== "undefined") {
const textarea = document.getElementById("X13GPSR_CUSTOM_CSS");
if (!textarea) return;
CodeMirror.fromTextArea(textarea, {
lineNumbers: true,
mode: "css",
theme: "monokai",
});
}
}
function initTooltips() {
$(".x13gpsr-circle-container").popover({
html: true,
trigger: "hover",
placement: "top",
content: function () {
const tooltip = this.querySelector(".x13gpsr-custom-tooltip");
if (!tooltip) return false;
const html = tooltip.innerHTML;
return html;
},
});
$(".x13gpsr-circle-container").on("show.bs.popover", function () {
const popoverInstance = $(this).data("bs.popover");
if (popoverInstance) {
const $tip = popoverInstance.tip();
$tip.addClass("x13gpsr-tooltip");
}
});
}
if (typeof x13gpsr_select_brands_txt !== "undefined" && $('select[name="brands[]"]').length) {
$('select[name="brands[]"]').attr('data-placeholder', x13gpsr_select_brands_txt);
}
if (document.querySelector('#configuration_form.x13gpsr')) {
document.querySelector('#subtab-AdminX13GPSRParent, #maintab-AdminX13GPSRParent').classList.add('ul-open', 'open', 'active');
document.querySelector('#subtab-AdminX13GPSRSettings').classList.add('link-active', 'active');
}
$(document).on('click', 'button[name="xgpsr-copy-code"]', function () {
var target = $(this).data('target');
var msg = $(this).data('success');
$(target).focus().select();
document.execCommand("copy");
$.growl.notice({ title: "", message: msg });
});
});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
!function(){"use strict";function e(e,n,t){if(t||2===arguments.length)for(var i,o=0,s=n.length;o<s;o++)!i&&o in n||(i||(i=Array.prototype.slice.call(n,0,o)),i[o]=n[o]);return e.concat(i||Array.prototype.slice.call(n))}"function"==typeof SuppressedError&&SuppressedError;var n=function(e,n){return void 0===n&&(n=document),n.querySelector(e)},t=function(n,t){return void 0===t&&(t=document),e([],Array.from(t.querySelectorAll(n)),!0)},i=".x13gpsr__backdrop",o=".x13gpsr__box-inner",s={show:".x13gpsr__btn--show",close:".x13gpsr__btn--close"},l={link:".x13gpsr__nav-link",tab:".x13gpsr__tab-pane"},c={elements:{links:[],tabs:[]},init:function(){c.cacheElements(),c.setEvents()},cacheElements:function(){c.elements.links=t(l.link),c.elements.tabs=t(l.tab)},setEvents:function(){var e;null===(e=c.elements.links)||void 0===e||e.forEach((function(e){e.addEventListener("click",c.handleNavLink)}))},handleNavLink:function(t){t.preventDefault();var i=t.currentTarget,o=i.getAttribute("href");if(o){var s=n(o);s&&(e(e([],c.elements.links,!0),c.elements.tabs,!0).forEach((function(e){e.classList.remove("active")})),i.classList.add("active"),s.classList.add("active"))}}},a="x13gpsr-block",r="x13gpsr-hidden",d="x13gpsr-transition",u={elements:{closeBtn:null,backdrop:null},init:function(){!function(e,i){void 0===i&&(i="body");var o=t(e),s=n(i);s&&0!==o.length&&o.forEach((function(e){var n=e.parentElement;if(n&&!("body"===i&&"BODY"===n.tagName||"body"!==i&&n.matches(i))){var t=n.removeChild(e);s.appendChild(t)}}))}(i),u.cacheElements(),u.setEvents(),c.init()},cacheElements:function(){var e=i,t=s;u.elements.closeBtn=n(t.close),u.elements.backdrop=n(e)},setEvents:function(){var e,n;null===(e=u.elements.closeBtn)||void 0===e||e.addEventListener("click",u.handleClose),null===(n=u.elements.backdrop)||void 0===n||n.addEventListener("click",u.handleClick)},handleClose:function(e){e.preventDefault(),u.hide()},handleClick:function(e){var n=o;e.target.closest(n)||u.hide()},show:function(){var e;document.body.style.paddingRight=window.innerWidth-document.documentElement.clientWidth+"px",document.body.classList.add(a),null===(e=u.elements.backdrop)||void 0===e||e.classList.remove(r),setTimeout((function(){document.body.classList.add(d)}),10)},hide:function(){document.body.classList.remove(d),setTimeout((function(){var e;document.body.classList.remove(a),document.body.style.paddingRight="",null===(e=u.elements.backdrop)||void 0===e||e.classList.add(r)}),300)}},v={init:function(){var e;null===(e=n(s.show))||void 0===e||e.addEventListener("click",v.handleShow),u.init()},handleShow:function(e){e.preventDefault(),u.show()}};document.addEventListener("DOMContentLoaded",(function(){v.init()}))}();

View File

@@ -0,0 +1,11 @@
<?php
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File

@@ -0,0 +1 @@
!function(){"use strict";class t{constructor(){this.modalContainerId="gsprModalContainer",this.init()}init(){document.querySelectorAll(".xgpsr-bulk-assign-button").forEach((t=>{const e=t.closest("a");e&&(e.removeAttribute("onclick"),e.classList.add("xgpsr-bulk-update-button"))})),document.addEventListener("click",(t=>{t.target.closest(".xgpsr-bulk-update-button")&&this.handleBulkUpdateButton(t,t.target.closest(".xgpsr-bulk-update-button"))})),document.addEventListener("click",(t=>{t.target&&"xgpsr-submit-bulk-update"===t.target.id&&this.handleConfirm(t)})),document.addEventListener("click",(t=>{const e=t.target.closest('[data-action="xgpsr-product-update"]');e&&this.handleSingleUpdateButton(t,e)}))}handleSingleUpdateButton(t,e){t.preventDefault();const r=[{id:e.getAttribute("data-id"),name:e.getAttribute("data-name")}],n=e.getAttribute("data-type");0!==r.length?this.loadModal(n,r):alert(x13gpsrSelectAtLeastOneProduct)}handleBulkUpdateButton(t,e){t.preventDefault();const r=[...e.querySelector("i").classList].find((t=>t.startsWith("xgpsr-bulk-assign-button-type-"))),n=r?r.replace("xgpsr-bulk-assign-button-type-",""):"",s=e.closest("form");if(!s)return void alert("Error: Cannot find the parent form.");const o=[...s.querySelectorAll('input[name$="productsBox[]"]:checked')].map((t=>{const e=t.closest("tr").querySelectorAll("td")[3].innerText.trim();return{id:t.value,name:e}}));0!==o.length?this.loadModal(n,o):alert(x13gpsrSelectAtLeastOneProduct)}loadModal(t,e){fetch(GsprAjaxUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({ajax:1,action:"renderBulkAssignModal",type:t,selectedProducts:JSON.stringify(e)})}).then((t=>t.text())).then((t=>this.displayModal(t))).catch((()=>alert(x13gpsrErrorLoadingModal)))}displayModal(t){let e=document.getElementById(this.modalContainerId);e||(e=document.createElement("div"),e.id=this.modalContainerId,e.classList.add("modal","fade","x13gpsr-modal"),e.setAttribute("tabindex","-1"),e.setAttribute("role","dialog"),document.querySelector(".bootstrap").appendChild(e)),e.innerHTML=t,$(e).modal("show"),$(e).on("hidden.bs.modal",(()=>{e.innerHTML=""}))}scrollToBottom(t){t.scrollTop=t.scrollHeight}handleConfirm(t){const e=document.getElementById(this.modalContainerId),r=t.target.getAttribute("data-type");if(!e)return void alert("Error: Modal container not found.");const n=[...e.querySelectorAll('input[name="selectedProducts[]"]')].map((t=>({id:t.value,name:t.dataset.name})));if(0===n.length)return void alert(x13gpsrSelectAtLeastOneProduct);const s=new FormData;e.querySelectorAll('[name^="bulk_update_data["]').forEach((t=>{"checkbox"===t.type||"radio"===t.type?t.checked&&s.append(t.name,t.value):s.append(t.name,t.value)})),s.append("ajax",1),s.append("action","performBulkAssign"),s.append("type",r);const o=[];for(let t=0;t<n.length;t+=100)o.push(n.slice(t,t+100));const a=e.querySelector(".x13gpsr-logs"),l=e.querySelector("#xgpsr-progress-container"),d=e.querySelector("#xgpsr-progress-bar"),i=e.querySelector("#xgpsr-bulk-update-logs"),c=e.querySelector("#xgpsr-updater-specific-container"),u=e.querySelector("#xgpsr-cancel-button"),p=e.querySelector("#xgpsr-submit-bulk-update"),g=e.querySelector("#xgpsr-close-button");g.addEventListener("click",(()=>{location.reload()})),a.style.display="block",l.style.display="block",d.style.width="0%",d.setAttribute("aria-valuenow","0"),d.textContent="0%",i.innerHTML="",p.disabled=!0,u.disabled=!0;const h=t=>{if(t>=o.length)return c.innerHTML="",p.style.display="none",u.style.display="none",g.style.display="block",i.innerHTML+=`<hr><div class="text-info"><strong>${x13gpsrActionSuccessful}</strong></div>`,void this.scrollToBottom(i);const e=o[t];s.set("selectedProducts",JSON.stringify(e)),fetch(GsprAjaxUrl,{method:"POST",body:s}).then((t=>t.json())).then((e=>{if(e.error)return i.innerHTML+=`<div class="text-danger">${e.error}</div>`,c.innerHTML="",p.style.display="none",u.style.display="none",g.style.display="block",void this.scrollToBottom(i);if(e.results){e.results.forEach((t=>{"success"===t.status?i.innerHTML+=`<div class="text-success">${x13gpsProduct} <strong>${t.name}</strong> (ID: ${t.id}) ${t.message}</div>`:"warning"===t.status&&(i.innerHTML+=`<div class="text-warning">${t.message}</div>`)}));const r=Math.round((t+1)/o.length*100);d.style.width=`${r}%`,d.setAttribute("aria-valuenow",r),d.textContent=`${r}%`}this.scrollToBottom(i),h(t+1)})).catch((()=>{i.innerHTML+=`<div class="text-danger">${x13gpsrErrorPerformingUpdate}</div>`,this.scrollToBottom(i),h(t+1)}))};h(0)}}document.addEventListener("DOMContentLoaded",(()=>new t))}();

View File

@@ -0,0 +1 @@
!function(){"use strict";class e{constructor(){this.modalId="#xgpsr-csv-import-modal",this.importButtonId=x13gpsr_import_button,this.init()}init(){document.getElementById(this.importButtonId).addEventListener("click",(()=>{const e=document.querySelector(this.modalId);e&&$(e).modal("show")})),$(this.modalId).on("hidden.bs.modal",(()=>{document.querySelectorAll(".mapping-select").forEach((e=>{e.value=""})),document.getElementById("xgpsr-mapping-error-container").style.display="none"})),document.addEventListener("change",(e=>{"xgpsr-csv-file"===e.target.id&&this.uploadCsv(e.target.files[0])})),document.addEventListener("click",(e=>{"xgpsr-process-mapping"===e.target.id&&this.processMapping()}))}uploadCsv(e){const t=new FormData;t.append("xgpsr-csv-file",e),t.append("ajax",1),t.append("action","uploadCsv"),t.append("xgpsr-csv-delimeter",document.getElementById("xgpsr-csv-delimeter").value),fetch(this.getAjaxUrl(),{method:"POST",body:t}).then((e=>e.json())).then((e=>{if(e.error)return void alert(x13gpsrErrorLoadingModal);document.getElementById("xgpsr-mapping-container").innerHTML=e.modalContent,document.getElementById("xgpsr-temp-file-path").value=e.tempFilePath,document.getElementById("xgpsr-process-mapping").disabled=!1;const t=e.csvHeaders.map((e=>e.toLowerCase().replace(/[^a-z0-9_]/g,"_").replace(/_+$/,"")));document.querySelectorAll(".mapping-select").forEach((e=>{const r=e.dataset.field.toLowerCase(),n=t.indexOf(r);e.value=-1!==n?n:""}))})).catch((e=>{console.error("Error during CSV upload:",e),alert(x13gpsrErrorLoadingModal)}))}processMapping(){const e={},t=[];if(document.querySelectorAll(".mapping-select").forEach((r=>{const n=r.dataset.field,o=r.closest("tr")?.querySelector("span"),a=o?.textContent.includes("*")||!1;e[n]=r.value,!a||""!==r.value&&"skip"!==r.value||t.push(n)})),t.length>0){const e=document.getElementById("xgpsr-mapping-error-container");return e.innerHTML=`<div class="alert alert-danger">${x13gpsrRequiredFieldsError} (${t.join(", ")})</div>`,void(e.style.display="block")}const r=new FormData;r.append("mapping",JSON.stringify(e)),r.append("xgpsr-temp-file-path",document.getElementById("xgpsr-temp-file-path").value),r.append("xgpsr-csv-delimeter",document.getElementById("xgpsr-csv-delimeter").value),r.append("ajax",1),r.append("action","processImportCsv"),fetch(this.getAjaxUrl(),{method:"POST",body:r}).then((e=>e.json())).then((e=>{const t=document.querySelector(`${this.modalId} .modal-body`);e.error?t.innerHTML=`<div class="alert alert-danger">${e.error}</div>`:(t.innerHTML=`\n <div class="alert alert-success">${x13gpsrSuccessMessage}</div>\n <button class="btn btn-primary" onclick="location.reload();">${x13gpsrCloseButton}</button>\n `,document.querySelector(`${this.modalId} .modal-footer`).remove())})).catch((()=>{const e=document.getElementById("xgpsr-mapping-error-container");e.innerHTML='<div class="alert alert-danger">Error processing import.</div>',e.style.display="block"}))}getAjaxUrl(){return x13gpsr_ajax_url}}document.addEventListener("DOMContentLoaded",(()=>new e))}();