관리-도구
편집 파일: custom.min.js
!function(e){"use strict";function t(e){var t=new FileReader;t.onload=function(){document.getElementById("output").src=t.result},t.readAsDataURL(e.target.files[0])}function a(t,a,s){e.ajax({url:t,method:"GET",dataType:"json",success:function(t){e(a).html("");let n=[];e.each(t.data,function(e,t){n.push(`<option value="${t.id}"> ${t.name}</option>`)}),e(a).append(`<option selected disabled>${s}</option> ${n}`)},error:function(e){Command:toastr.error("Not Found")}})}e(".country-list").select2({placeholder:`${selectCountry}`}),e(".state-list").select2({placeholder:`${selectState}`}),e(".city-list").select2({placeholder:`${selectCity}`,width:"100%"}),e(document).on("submit",".form",function(t){t.preventDefault();let a=e(this),s=new FormData(a[0]),n=a.attr("action"),o=e(a).find("button[type='submit']"),l=o.text();e.ajax({url:n,method:"POST",data:s,dataType:"json",cache:!1,contentType:!1,processData:!1,beforeSend:function(){o.html(`<div class="animate-spin text-white"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 512 512"> <path fill="currentColor" d="M304 48a48 48 0 1 0-96 0a48 48 0 1 0 96 0m0 416a48 48 0 1 0-96 0a48 48 0 1 0 96 0M48 304a48 48 0 1 0 0-96a48 48 0 1 0 0 96m464-48a48 48 0 1 0-96 0a48 48 0 1 0 96 0M142.9 437A48 48 0 1 0 75 369.1a48 48 0 1 0 67.9 67.9m0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437a48 48 0 1 0 67.9-67.9a48 48 0 1 0-67.9 67.9"/> </svg> </div> ${l}`),o.attr("disabled",!0)},success:function(t){if("error"==t.status){var s;if(o.attr("disabled",!1),o.html(`${l}`),t.hasOwnProperty("message"))Command:toastr.error(`${t.message}`);""!==t.data&&(s=t.data,e.each(s,function(t,a){e("."+t+"_err").text(a).fadeIn().delay(5e3).fadeOut("slow")}))}else if("success"==t.status){if(o.removeAttr("disabled","false"),e(a).find("button[type='submit']").html(`${l}`),t.hasOwnProperty("url")&&location.replace(`${t.url}`),t.hasOwnProperty("modal_hide")&&"yes"==t.modal_hide&&(e(".fixed.inset-0").removeClass("flex"),e(".fixed.inset-0").addClass("hidden")),t.hasOwnProperty("ai_type")&&e("#outputContent").text(`${t.data}`),t.hasOwnProperty("message"))Command:toastr.success(`${t.message}`);t.hasOwnProperty("type")&&location.reload(),resetForm()}}})}),e(document).on("click",".default-change",function(t){let a=e(this).data("title");Swal.fire({title:a??`${warningLanguage}`,text:"",showCancelButton:!0,confirmButtonColor:"#5F71FA",cancelButtonColor:"#FF4626",confirmButtonText:confirmText,cancelButtonText:cancelText,customClass:{title:"text-heading"}}).then(t=>{if(t.isConfirmed){let s=e(this).data("action");e.ajax({url:s,method:"GET",dataType:"json",success:function(e){if("success"==e.status){Command:toastr.success(`${e.message}`);Swal.fire({title:`${changedText}!`,text:`${a??confirmationLanguage}`,icon:"success"}).then(t=>{e.hasOwnProperty("url")&&(location.href=e.url)})}else if("error"==e.status&&e.hasOwnProperty("message"))Command:toastr.error(`${e.message}`)}})}})}),e(document).on("click",".status-change",function(t){let a=e(this).data("action");e.ajax({url:a,method:"GET",dataType:"json",success:function(e){if("success"==e.status){Command:toastr.success(`${e.message}`);e.hasOwnProperty("url")&&(location.href=e.url)}else if("error"==e.status&&e.hasOwnProperty("message"))Command:toastr.error(`${e.message}`)}})}),e(document).on("click",".delete-btn-cs",function(t){let a=e(this),s=a.data("title");s=s??deletePermanently;let n=a.data("type"),o=a.data("text"),l=` <div class="text-left"> <label class="form-label flex items-center gap-2"> <input type="checkbox" checked disabled name="name"> ${allCurriculum} </label> <label class="form-label flex items-center gap-2"> <input type="checkbox" checked disabled name="name"> ${allTopic} </label> <label class="form-label flex items-center gap-2"> <input type="checkbox" checked disabled name="name"> ${purchaseHistory} </label> <label class="form-label flex items-center gap-2"> <input type="checkbox" checked disabled name="name"> ${bundleCourse} </label> <label class="form-label flex items-center gap-2"> <input type="checkbox" checked disabled name="name"> ${courseData} </label> </div> `;Swal.disableInput(),Swal.fire({html:"admin"==(n??"")?l:"",title:s+"?",text:o??"",showCancelButton:!0,confirmButtonColor:"#5F71FA",cancelButtonColor:"#FF4626",confirmButtonText:confirmText,cancelButtonText:cancelText,customClass:{title:"text-heading"}}).then(t=>{if(t.isConfirmed){let s=e(a).data("action");e.ajax({url:s,method:"delete",data:{_token:e("#csrf-token")[0].content},dataType:"json",success:function(e){if("success"==e.status)e.hasOwnProperty("type")?a.parent().parent().remove():a.parent().parent().parent().remove(),Swal.fire({title:deletedText+"!",text:dataDeleted,icon:"success"}).then(t=>{t.isConfirmed&&e.hasOwnProperty("url")&&(location.href=e.url)});else if("error"==e.status&&e.hasOwnProperty("message"))Command:toastr.error(`${e.message}`)}})}})}),e(document).on("click",".trash-restore-btn-cs",function(t){let a=e(this),s=a.data("title");s=s??"You won't be able to revert this!";let n=a.data("text");Swal.fire({title:s+"?",text:n,showCancelButton:!0,confirmButtonColor:"#5F71FA",cancelButtonColor:"#FF4626",confirmButtonText:confirmText,cancelButtonText:cancelText,customClass:{title:"text-heading"}}).then(t=>{if(t.isConfirmed){let s=e(a).data("action");e.ajax({url:s,method:"put",data:{_token:e("#csrf-token")[0].content},dataType:"json",success:function(e){if("success"==e.status)Swal.fire({title:successText,icon:"success"}).then(t=>{t.isConfirmed&&(location.href=e.url)});else if("error"==e.status&&e.hasOwnProperty("message"))Command:toastr.error(`${e.message}`)}})}})}),e(document).on("change",".theme-setting-image",function(t){(function t(a){if(a.files&&a.files[0]){var s=new FileReader;s.onload=function(t){let s=baseUrl+"/theme-setting/image-upload-file",n=e(a).parent().find("#oldFile").val(),o=e(a).attr("data-type");e.ajax({url:s,type:"POST",data:{image:t.target.result,old_file:n,type:o},dataType:"json",success:function(t){"success"===t.status&&(e(a).parent().find("#oldFile").val(t.image_name),void 0!=o&&e("#certificateImg").css("background-image","url("+t.path+")"))},error:function(e){Command:toastr.error("Not Found")}}),e(a).parent().parent().find("#preview_img").attr("src",t.target.result)},s.readAsDataURL(a.files[0])}})(this)}),e(document).on("change",".country-state",function(t){t.preventDefault();let s=e(this).find("option:selected").val();if("Select Country"!==s){let n=baseUrl+"/localization/country-state/"+s,o=e("#stateOption");""!==s&&a(n,o,"Select State")}}),e(document).on("change",".state-city",function(t){t.preventDefault();let s=e(this).find("option:selected").val(),n=baseUrl+"/localization/state-city/"+s,o=e("#cityOption"),l=selectCity;""!==s&&void 0!==s&&a(n,o,l)});let s=e("#countryId").val();void 0!==s&&""!==s&&e(".country-state").trigger("change");let n=e("#stateId").val(),o=e("#cityId").val();void 0!==n&&""!==n&&(e(".state-city").trigger("change"),setTimeout(()=>{e(".state-city").select2("val",n)},1e3)),void 0!==o&&""!==o&&setTimeout(()=>{e(".city-list").select2("val",o)},1500),e(document).on("change",".select-status-change",function(){let t=e(this).data("action"),a=e(this).val();e.ajax({url:t,method:"GET",data:{status:a},dataType:"json",success:function(e){"success"==e.status&&e.hasOwnProperty("type")&&location.reload()},error:function(e){Command:toastr.error("Not Found")}})}),e(document).on("submit",".add_setting",function(t){t.preventDefault();let a=e(this),s=new FormData(a[0]),n=a.attr("action"),o=a.data("key");s.append("key",o),e.ajax({url:n,type:"POST",dataType:"json",data:s,contentType:!1,cache:!1,processData:!1,success:function(e){"success"===e.status?toastr.success(`${e.message}`):"error"==e.status&&toastr.error(`${e.message}`)}})}),e(document).on("click",".btn-support-delete",function(){let t=e(this),a=e(t).data("action");e.ajax({url:a,type:"GET",dataType:"json",success:function(a){e(t).parent().remove(),"success"===a.status?toastr.success(`${a.message}`):!1==a.status&&toastr.error(`${a.message}`)},error:function(e){Command:toastr.error("Not Found")}})}),e(".editorContainer").each((t,a)=>{CodeMirror.fromTextArea(e(".editorContainer")[t],{mode:"javascript",lineNumbers:!1,theme:"material",matchBrackets:!0,continueComments:enterText,matchBrackets:!0,lineWrapping:!0,extraKeys:{"Ctrl-Space":"autocomplete"}})}),e(document).on("change",".organization-list",function(t){t.preventDefault();let a=baseUrl+"/organization-instructor/"+e(this).val(),s=e(this).data("locale");e.ajax({url:a,method:"GET",data:{locale:s},dataType:"json",success:function(t){e("#instructorOption").html(""),e("#instructorOption").append(`${t.data}`)}})}),e("#supportCategory").hide(),e("#supportCourse").hide(),e(document).on("change",".support-category-type",function(t){"platform"==e(this).val()?(e("#supportCategory").show(),e("#supportCourse").hide()):"course"==e(this).val()&&(e("#supportCategory").hide(),e("#supportCourse").show())}),e(document).on("click",".add-item",function(){let t=e(this).closest("form").find(".total-length"),a=t.data("length");e(".social-area").append(`<div class="flex items-end gap-5 mt-7 group-item"> <div class="grid grid-cols-2 gap-4 grow"> <div class="col-span-full xl:col-auto leading-none"> <label class="form-label">${iconClassName}</label> <input type="text" name="socials[${a}][icon]" class="form-input"> </div> <div class="col-span-full xl:col-auto leading-none"> <label class="form-label">${linkUrl}</label> <input type="text" class="form-input" name="socials[${a}][url]"> </div> </div> <button type="button" class="btn b-solid btn-danger-solid dk-theme-card-square max-h-fit shrink-0 delete-item"> ${deleteText} </button> </div> `),a++,e(t).data("length",a)}),e(document).on("click",".delete-item",function(){e(this).closest(".group-item").remove()});let l=e("#imgUploadPathPoster").val();e(document).on("click",".add-poster",function(){let t=e(this).closest(".card").find(".poster-area"),a=t.data("length");e(".poster-area").append(` <div class="card grid grid-cols-2 gap-x-4 gap-y-6 poster-item"> <div class="col-span-full 2xl:col-auto leading-none"> <label class="form-label">${titleText}</label> <input type="text" name="poster[${a}][title]" class="form-input"> </div> <div class="col-span-full 2xl:col-auto leading-none"> <label class="form-label">${descriptionText}</label> <input type="text" name="poster[${a}][description]" class="form-input"> </div> <div class="col-span-full 2xl:col-auto leading-none"> <label class="form-label">${buttonText}</label> <input type="text" name="poster[${a}][button_label]" class="form-input"> </div> <div class="col-span-full 2xl:col-auto leading-none"> <label class="form-label">${buttonUrl}</label> <input type="text" class="form-input" name="poster[${a}][button_link]" /> </div> <div class="col-span-full leading-none"> <label class="form-label">${posterBgImage}</label> <label for="bannerImage${a}" class="dropzone-wrappe file-container ac-bg text-xs leading-none font-semibold mb-3 cursor-pointer w-full h-[200px] flex flex-col items-center justify-center gap-2.5 border border-dashed border-gray-900 rounded-10 dk-theme-card-square"> <input type="file" class="dropzone theme-setting-image" hidden id ="bannerImage${a}"> <input type="hidden" name="poster[${a}][poster_img]" id="oldFile"> <span class="flex-center flex-col peer-[.uploaded]/file:hidden"> <img src="${l}" alt="file-icon" class="size-8 lg:size-auto"> <div class="text-gray-500 dark:text-dark-text mt-2">${chooseFile}</div> </span> </label> <div class="preview-zone dropzone-preview"> <div class="box box-solid"> <img id="preview_img" src="" width="120"> </div> </div> </div> <button type="button" class="btn b-solid btn-danger-solid dk-theme-card-square max-h-fit shrink-0 delete-poster-item"> ${deleteText} </button> </div> `),a++,e(t).data("length",a)}),e(document).on("click",".delete-poster-item",function(){e(this).closest(".poster-item ").remove()}),e(document).on("change",".bundle-price-cal",function(){let t=e(this).val(),a=e("#platform_fee").val();var s=Number(a);a=parseInt(a,10),t=Number(t);let n=s+t;e("#total_price").val(n)}),e(document).on("change",".check-enable-parent",function(){let t=e(this).prop("checked"),a=e(this).closest(".group-permission").find(".check-enable-child");e.each(a,function(a,s){e(s).prop("checked",t)})}),e(document).on("click",".copytext",function(){document.getElementById("outputContent").select(),document.execCommand("copy")})}(jQuery);function resetForm(){$(".form").trigger("reset")}