File: /home/h340499/public_html/wp-content/plugins/learnpress/assets/js/admin/edit-quiz.min.js
import*as lpUtils from"../utils.js";import SweetAlert from"sweetalert2";import Sortable from"sortablejs";import*as lpToastify from"lpAssetsJsPath/lpToastify.js";import"toastify-js/src/toastify.css";import{EditQuestion}from"./edit-question.js";import{LpPopupSelectItemToAdd}from"lpAssetsJsPath/lpPopupSelectItemToAdd.js";let editQuestion;const lpPopupSelectItemToAdd=new LpPopupSelectItemToAdd;lpPopupSelectItemToAdd.init();class EditQuiz{constructor(){this.idUrlHandle="edit-quiz-questions",this.elEditQuizWrap=null,this.elEditListQuestions=null,this.quizID=null}static selectors={elEditQuizWrap:".lp-edit-quiz-wrap",elQuestionEditMain:".lp-question-edit-main",elQuestionToggleAll:".lp-question-toggle-all",elEditListQuestions:".lp-edit-list-questions",elQuestionItem:".lp-question-item",elQuestionToggle:".lp-question-toggle",elPopupItemsToSelectClone:".lp-popup-items-to-select.clone",elBtnAddQuestion:".lp-btn-add-question",elBtnRemoveQuestion:".lp-btn-remove-question",elBtnUpdateQuestionTitle:".lp-btn-update-question-title",elBtnCancelUpdateQuestionTitle:".lp-btn-cancel-update-question-title",elQuestionTitleNewInput:".lp-question-title-new-input",elQuestionTitleInput:".lp-question-title-input",elQuestionTypeLabel:".lp-question-type-label",elQuestionTypeNew:".lp-question-type-new",elAddNewQuestion:"add-new-question",elQuestionClone:".lp-question-item.clone",LPTarget:".lp-target",elCollapse:"lp-collapse"};init(){lpUtils.lpOnElementReady(EditQuiz.selectors.elEditQuizWrap,e=>{this.elEditQuizWrap=e,this.elEditListQuestions=this.elEditQuizWrap.querySelector(EditQuiz.selectors.elEditListQuestions);const t=this.elEditQuizWrap.closest(EditQuiz.selectors.LPTarget),s=window.lpAJAXG.getDataSetCurrent(t);this.quizID=s.args.quiz_id,this.sortAbleQuestion(),editQuestion=new EditQuestion,editQuestion.init();e.querySelectorAll(`${EditQuiz.selectors.elQuestionEditMain}`).forEach(e=>{editQuestion.sortAbleQuestionAnswer(e)}),this.events()})}events(){EditQuiz._loadedEvents||(EditQuiz._loadedEvents=!0,lpUtils.eventHandlers("click",[{selector:EditQuiz.selectors.elQuestionToggleAll,class:this,callBack:this.toggleQuestionAll.name},{selector:EditQuiz.selectors.elBtnAddQuestion,class:this,callBack:this.addQuestion.name},{selector:EditQuiz.selectors.elBtnRemoveQuestion,class:this,callBack:this.removeQuestion.name},{selector:EditQuiz.selectors.elBtnUpdateQuestionTitle,class:this,callBack:this.updateQuestionTitle.name},{selector:EditQuiz.selectors.elBtnCancelUpdateQuestionTitle,class:this,callBack:this.cancelChangeTitleQuestion.name},{selector:LpPopupSelectItemToAdd.selectors.elBtnAddItemsSelected,class:lpPopupSelectItemToAdd,callBack:lpPopupSelectItemToAdd.addItemsSelectedToSection.name,callBackHandle:this.addQuestionsSelectedToQuiz.bind(this)}]),lpUtils.eventHandlers("keydown",[{selector:EditQuiz.selectors.elQuestionTitleInput,class:this,callBack:this.updateQuestionTitle.name,checkIsEventEnter:!0},{selector:EditQuiz.selectors.elQuestionTitleNewInput,class:this,callBack:this.addQuestion.name,checkIsEventEnter:!0}]),lpUtils.eventHandlers("keyup",[{selector:EditQuiz.selectors.elQuestionTitleInput,class:this,callBack:this.changeTitleQuestion.name},{selector:`${EditQuiz.selectors.elQuestionTitleNewInput}, ${EditQuiz.selectors.elQuestionTypeNew}`,class:this,callBack:this.checkCanAddQuestion.name}]),lpUtils.eventHandlers("change",[{selector:EditQuiz.selectors.elQuestionTypeNew,class:this,callBack:this.checkCanAddQuestion.name}]),document.addEventListener("click",e=>{const t=e.target;lpUtils.toggleCollapse(e,t,EditQuiz.selectors.elQuestionToggle,[],()=>this.checkAllQuestionsCollapsed())}))}toggleQuestionAll(e){const{e:t,target:s}=e,i=s.closest(`${EditQuiz.selectors.elQuestionToggleAll}`);if(!i)return;const l=this.elEditQuizWrap.querySelectorAll(`${EditQuiz.selectors.elQuestionItem}:not(.clone)`);i.classList.toggle(`${EditQuiz.selectors.elCollapse}`),l.forEach(e=>{const t=i.classList.contains(`${EditQuiz.selectors.elCollapse}`);e.classList.toggle(`${EditQuiz.selectors.elCollapse}`,t)})}checkAllQuestionsCollapsed(){const e=this.elEditQuizWrap.querySelectorAll(`${EditQuiz.selectors.elQuestionItem}:not(.clone)`),t=this.elEditQuizWrap.querySelector(`${EditQuiz.selectors.elQuestionToggleAll}`);let s=!0;e.forEach(e=>{if(e.classList.contains(`${EditQuiz.selectors.elCollapse}`))return s=!1,!1}),s?t.classList.remove(`${EditQuiz.selectors.elCollapse}`):t.classList.add(`${EditQuiz.selectors.elCollapse}`)}updateCountItems(){const e=this.elEditQuizWrap.querySelector(".total-items"),t=this.elEditQuizWrap.querySelectorAll(`${EditQuiz.selectors.elQuestionItem}:not(.clone)`).length;e.dataset.count=t,e.querySelector(".count").textContent=t}addQuestion(e){const{e:t,target:s,callBackNest:i}=e;t.preventDefault();const l=s.closest(`.${EditQuiz.selectors.elAddNewQuestion}`);if(!l)return;const o=l.querySelector(`${EditQuiz.selectors.elQuestionTitleNewInput}`),n=o.value.trim();if(!n)return void lpToastify.show(o.dataset.messEmptyTitle,"error");const u=l.querySelector(`${EditQuiz.selectors.elQuestionTypeNew}`),c=u.value;if(!c)return void lpToastify.show(u.dataset.messEmptyType,"error");const r=this.elEditListQuestions.querySelector(`${EditQuiz.selectors.elQuestionItem}.clone`),a=r.cloneNode(!0);a.querySelector(`${EditQuiz.selectors.elQuestionTitleInput}`).value=n,o.value="",a.classList.remove("clone"),lpUtils.lpShowHideEl(a,1),r.insertAdjacentElement("beforebegin",a),lpUtils.lpSetLoadingEl(a,1);const d={success:e=>{const{message:t,status:s,data:l}=e,{question:o,html_edit_question:n}=l;if("error"===s)throw`Error: ${t}`;if("success"===s){a.dataset.questionId=o.ID,a.dataset.questionType=o.meta_data._lp_type,a.outerHTML=n;const t=this.elEditListQuestions.querySelector(`${EditQuiz.selectors.elQuestionItem}[data-question-id="${o.ID}"]`);t.classList.remove(EditQuiz.selectors.elCollapse),this.updateCountItems(),editQuestion.initTinyMCE();const s=t.querySelector(`${EditQuiz.selectors.elQuestionEditMain}`);editQuestion.sortAbleQuestionAnswer(s),i&&"function"==typeof i.success&&i.success({response:e,elQuestionItemCreated:t})}lpToastify.show(t,s)},error:e=>{a.remove(),lpToastify.show(e,"error"),i&&"function"==typeof i.error&&i.error({error:e,newQuestionItem:a})},completed:()=>{lpUtils.lpSetLoadingEl(a,0),this.checkCanAddQuestion({e:t,target:o}),i&&"function"==typeof i.completed&&i.completed({newQuestionItem:a})}};let p=JSON.parse(o.dataset.send);p={...p,question_title:n,question_type:c},window.lpAJAXG.fetchAJAX(p,d)}addQuestionsSelectedToQuiz(e){const t=[];e.forEach(e=>{const s=this.elEditQuizWrap.querySelector(`${EditQuiz.selectors.elQuestionItem}.clone`);if(!s)return;t.push(e.id);const i=s.cloneNode(!0),l=i.querySelector(`${EditQuiz.selectors.elQuestionTitleInput}`);i.classList.remove("clone"),i.dataset.questionId=e.id,l.value=e.titleSelected,lpUtils.lpSetLoadingEl(i,1),lpUtils.lpShowHideEl(i,1),s.insertAdjacentElement("beforebegin",i),lpUtils.lpSetLoadingEl(i,1)});const s={success:e=>{const{message:t,status:s,data:i}=e;if("success"!==s)throw`Error: ${t}`;{lpToastify.show(t,s);const{html_edit_question:e}=i;e&&Object.entries(e).forEach(([e,t])=>{this.elEditQuizWrap.querySelector(`${EditQuiz.selectors.elQuestionItem}[data-question-id="${e}"]`).outerHTML=t}),this.updateCountItems(),editQuestion.initTinyMCE()}},error:e=>{lpToastify.show(e,"error")},completed:()=>{}},i={action:"add_questions_to_quiz",quiz_id:this.quizID,question_ids:t,args:{id_url:this.idUrlHandle}};window.lpAJAXG.fetchAJAX(i,s)}checkCanAddQuestion(e){const{e:t,target:s}=e,i=s.closest(EditQuiz.selectors.elQuestionTitleNewInput)||s.closest(EditQuiz.selectors.elQuestionTypeNew);if(!i)return;const l=i.closest(`.${EditQuiz.selectors.elAddNewQuestion}`);if(!l)return;const o=l.querySelector(`${EditQuiz.selectors.elBtnAddQuestion}`);if(!o)return;const n=l.querySelector(`${EditQuiz.selectors.elQuestionTitleNewInput}`),u=l.querySelector(`${EditQuiz.selectors.elQuestionTypeNew}`),c=n.value.trim(),r=u.value;c&&r?o.classList.add("active"):o.classList.remove("active")}removeQuestion(e){const{e:t,target:s}=e,i=s.closest(`${EditQuiz.selectors.elBtnRemoveQuestion}`);if(!i)return;const l=i.closest(`${EditQuiz.selectors.elQuestionItem}`);if(!l)return;const o=l.dataset.questionId;SweetAlert.fire({title:i.dataset.title,text:i.dataset.content,icon:"warning",showCloseButton:!0,showCancelButton:!0,cancelButtonText:lpDataAdmin.i18n.cancel,confirmButtonText:lpDataAdmin.i18n.yes,reverseButtons:!0}).then(e=>{if(e.isConfirmed){lpUtils.lpSetLoadingEl(l,1);const e={success:e=>{const{message:t,status:s}=e;lpToastify.show(t,s),"success"===s&&(l.remove(),this.updateCountItems())},error:e=>{lpToastify.show(e,"error")},completed:()=>{lpUtils.lpSetLoadingEl(l,0)}},t={quiz_id:this.quizID,action:"remove_question_from_quiz",question_id:o,args:{id_url:this.idUrlHandle}};window.lpAJAXG.fetchAJAX(t,e)}})}updateQuestionTitle(e){const{e:t,target:s}=e;let i=!1;if((s.closest(`${EditQuiz.selectors.elBtnUpdateQuestionTitle}`)||s.closest(`${EditQuiz.selectors.elQuestionTitleInput}`)&&"Enter"===t.key)&&(i=!0),!i)return;t.preventDefault();const l=s.closest(`${EditQuiz.selectors.elQuestionItem}`);if(!l)return;const o=l.querySelector(`${EditQuiz.selectors.elQuestionTitleInput}`);if(!o)return;const n=l.dataset.questionId,u=o.value.trim(),c=o.dataset.old,r=o.dataset.messEmptyTitle;if(0===u.length)return void lpToastify.show(r,"error");if(u===c)return;o.blur(),lpUtils.lpSetLoadingEl(l,1);const a={success:e=>{const{message:t,status:s}=e;"success"===s?o.dataset.old=u:o.value=c,lpToastify.show(t,s)},error:e=>{lpToastify.show(e,"error")},completed:()=>{lpUtils.lpSetLoadingEl(l,0),l.classList.remove("editing")}},d={quiz_id:this.quizID,action:"update_question",question_id:n,question_title:u,args:{id_url:this.idUrlHandle}};window.lpAJAXG.fetchAJAX(d,a)}changeTitleQuestion(e){const{e:t,target:s}=e,i=s.closest(`${EditQuiz.selectors.elQuestionTitleInput}`);if(!i)return;const l=i.closest(`${EditQuiz.selectors.elQuestionItem}`);i.value.trim()===(i.dataset.old||"")?l.classList.remove("editing"):l.classList.add("editing")}cancelChangeTitleQuestion(e){const{e:t,target:s}=e,i=s.closest(`${EditQuiz.selectors.elBtnCancelUpdateQuestionTitle}`);if(!i)return;const l=i.closest(`${EditQuiz.selectors.elQuestionItem}`),o=l.querySelector(`${EditQuiz.selectors.elQuestionTitleInput}`);o.value=o.dataset.old||"",l.classList.remove("editing")}sortAbleQuestion(){let e,t=0;new Sortable(this.elEditListQuestions,{handle:".drag",animation:150,onEnd:s=>{const i=s.item;t&&(clearTimeout(e),e=setTimeout(()=>{lpUtils.lpSetLoadingEl(i,1);const e=[];this.elEditListQuestions.querySelectorAll(`${EditQuiz.selectors.elQuestionItem}:not(.clone)`).forEach(t=>{const s=t.dataset.questionId;s&&e.push(s)});const s={success:e=>{const{message:t,status:s}=e;if("success"!==s)throw`Error: ${t}`;lpToastify.show(t,s),editQuestion.initTinyMCE()},error:e=>{lpToastify.show(e,"error")},completed:()=>{lpUtils.lpSetLoadingEl(i,0),t=0}},l={quiz_id:this.quizID,action:"update_questions_position",question_ids:e,args:{id_url:this.idUrlHandle}};window.lpAJAXG.fetchAJAX(l,s)},1e3))},onMove:()=>{clearTimeout(e)},onUpdate:()=>{t=1}})}}const editQuiz=new EditQuiz;editQuiz.init();