fictioneer/js/admin.min.js
2023-11-16 21:01:49 +01:00

1 line
11 KiB
JavaScript

function fcn_toggleInProgress(e,t=null){(t=null!==t?t:!e.disabled)?(e.dataset.enableWith=e.innerHTML,e.innerHTML=e.dataset.disableWith,e.disabled=!0,e.classList.add("disabled")):(e.innerHTML=e.dataset.enableWith,e.disabled=!1,e.classList.remove("disabled"))}function fcn_purgeSchema(e){const t=_$(`a[data-id="${e}"]`),a=t.closest(".row-actions");t.closest("tr").classList.add("no-schema"),a.remove(),fcn_ajaxPost({action:"fictioneer_ajax_purge_schema",nonce:document.getElementById("fictioneer_admin_nonce").value,post_id:e}).then((e=>{e.success||console.log(e.data)})).catch((e=>{console.log(e)}))}function fcn_purgeAllSchemas(e=0,t=null,a=0){const o=_$$("[data-action-purge-all-schemas]");null===t&&o.forEach((e=>{fcn_toggleInProgress(e,!0)})),fcn_ajaxPost({action:"fictioneer_ajax_purge_all_schemas",offset:e,nonce:document.getElementById("fictioneer_admin_nonce").value}).then((e=>{if(e.data.finished)o.forEach((e=>{fcn_toggleInProgress(e,!1)})),_$$("tr").forEach((e=>{e.classList.add("no-schema")}));else{const t=parseInt(a/Math.max(e.data.total,1)*100),n=t>0?` ${t} %`:"";o.forEach((e=>{e.innerHTML=e.dataset.disableWith+n})),fcn_purgeAllSchemas(e.data.next_offset,e.data.total,a+e.data.processed)}})).catch((e=>{console.log(e)}))}function fcn_delete_epub(e){fcn_ajaxPost({action:"fictioneer_ajax_delete_epub",name:e,nonce:document.getElementById("fictioneer_admin_nonce").value}).then((t=>{t.success?document.querySelector(`[data-action="delete-epub"][data-name="${e}"]`).closest("tr").remove():console.log(t)})).catch((e=>{console.log(e)}))}function fcn_ogMediaUpload(e){e.preventDefault();var t=wp.media({multiple:!1,library:{type:"image"}}).open().on("select",(function(){const e=t.state().get("selection").first().toJSON();_$$$("fictioneer-seo-og-image").value=e.id,_$$$("fictioneer-seo-og-display").setAttribute("src",e.url),_$$$("fictioneer-button-seo-og-image-remove").classList.remove("hidden"),_$(".og-source").classList.add("hidden")}))}function fcn_update_seo_title_chars(){const e=_$$$("fictioneer-seo-title");_$$$("fictioneer-seo-title-chars").innerHTML=`(${e.value.length}/70)`}function fcn_remove_seo_og_image(e){e.preventDefault();const t=_$$$("fictioneer-seo-og-display").dataset.placeholder;_$$$("fictioneer-seo-og-image").value="",_$$$("fictioneer-seo-og-display").setAttribute("src",t),_$$$("fictioneer-button-seo-og-image-remove").classList.add("hidden")}function fcn_confirmIt(e){const t=e.currentTarget.dataset.dialogMessage,a=e.currentTarget.dataset.dialogConfirm;if(!t||!a)return;const o=prompt(t);o?o.toLowerCase()!=a.toLowerCase()&&e.preventDefault():e.preventDefault()}function fcn_imageMediaUpload(e){e.preventDefault();const t=e.currentTarget.closest('[data-target="fcn-meta-field-image"]');var a=wp.media({multiple:!1,library:{type:"image"}}).open().on("select",(()=>{const e=a.state().get("selection").first().toJSON();t.querySelector('[data-target="fcn-meta-field-image-id"]').value=e.id,t.querySelector(".fictioneer-meta-field__image-display").style.backgroundImage=`url("${e.url}")`,t.querySelector(".fictioneer-meta-field__image-upload").classList.add("hidden"),t.querySelector(".fictioneer-meta-field__image-actions").classList.remove("hidden")}))}function fcn_ebookMediaUpload(e){e.preventDefault();const t=e.currentTarget.closest('[data-target="fcn-meta-field-ebook"]');var a=wp.media({multiple:!1,library:{type:["application/pdf","text/plain","application/rtf","application/x-mobipocket-ebook","application/epub+zip"]}}).open().on("select",(()=>{const e=a.state().get("selection").first().toJSON();t.querySelector('[data-target*="id"]').value=e.id,t.querySelector('[data-target*="name"]').textContent=e.title,t.querySelector('[data-target*="size"]').textContent=e.filesizeHumanReadable,t.querySelector('[data-target*="filename"]').textContent=e.filename,t.querySelector('[data-target*="filename"]').href=e.url,t.querySelector('[data-target*="upload"]').classList.add("hidden"),t.querySelector('[data-target*="replace"]').classList.remove("hidden"),t.querySelector('[data-target*="remove"]').classList.remove("hidden"),t.querySelector('[data-target*="display"]').classList.remove("hidden")}))}function fcn_ebookMediaRemove(e){e.preventDefault();const t=e.currentTarget.closest('[data-target="fcn-meta-field-ebook"]');t.querySelector('[data-target*="id"]').value=0,t.querySelector('[data-target*="name"]').textContent="",t.querySelector('[data-target*="size"]').textContent="",t.querySelector('[data-target*="filename"]').textContent="",t.querySelector('[data-target*="filename"]').href="",t.querySelector('[data-target*="upload"]').classList.remove("hidden"),t.querySelector('[data-target*="replace"]').classList.add("hidden"),t.querySelector('[data-target*="remove"]').classList.add("hidden"),t.querySelector('[data-target*="display"]').classList.add("hidden")}function fcn_tokensToggle(e,t){if(e<1)return void(t.querySelector("select").value=0);const a=JSON.parse(t.querySelector('[data-target="fcn-meta-field-tokens-options"]').value),o=t.querySelector('[data-target="fcn-meta-field-tokens-track"]'),n=t.querySelector('[data-target="fcn-meta-field-tokens-values"]'),i=fcn_splitList(n.value).filter((e=>!isNaN(e))).map((e=>Math.abs(parseInt(e)))),c=i.indexOf(e);-1===c?i.push(e):i.splice(c,1),n.value=i.join(", "),o.innerHTML="",i.forEach((e=>{const t=fcn_sanitizeHTML(a[e]?a[e]:e);o.innerHTML+=`<span class="fictioneer-meta-field__token" data-id="${e}"><span class="fictioneer-meta-field__token-name">${t}</span><button type="button" class="fictioneer-meta-field__token-button" data-id="${e}"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" focusable="false"><path d="M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z"></path></svg></button></span>`})),t.querySelector("select").value=0}function fcn_insertIconClass(e){const t=e.closest(".fictioneer-meta-field");t&&e&&(t.querySelector(".fictioneer-meta-field__input").value=e.dataset.value,t.querySelector(".fictioneer-meta-field__fa-icon").setAttribute("class",`fictioneer-meta-field__fa-icon ${e.dataset.value}`))}function fcn_checkRequiredFields(){let e=null;_$$(".fictioneer-meta-field [required]").forEach((t=>{!0!==e&&(e=""===t?.value.trim())})),e?wp.data?.dispatch("core/editor").lockPostSaving("requiredValueLock"):wp.data?.dispatch("core/editor").unlockPostSaving("requiredValueLock")}function fcn_setGroupDataList(e){const t=e.value,a=e.dataset.target;_$$$(a)?.remove(),0!=t&&fcn_ajaxGet({action:"fictioneer_ajax_get_chapter_groups",story_id:t,nonce:fictioneer_ajax.fictioneer_nonce}).then((e=>{if(e.success){const t=fcn_html`<datalist id="${a}">${e.data.html}</datalist>>`;document.body.appendChild(t)}else e.data.error&&console.log(e.data.error)}))}_$$("[data-purge-schema]").forEach((e=>{e.addEventListener("click",(e=>{e.preventDefault(),fcn_purgeSchema(e.currentTarget.dataset.id)}))})),_$$("[data-action-purge-all-schemas]").forEach((e=>{e.addEventListener("click",(e=>{e.preventDefault(),fcn_purgeAllSchemas()}))})),_$$('[data-dialog-target="schema-dialog"]').forEach((e=>{e.addEventListener("click",(e=>{const t=_$('[data-target="schema-content"]');t.value=e.currentTarget.closest("tr").querySelector("[data-schema-id]").textContent,t.scrollTop=0,setTimeout((()=>{t.scrollTop=0}),10)}))})),_$$('[data-action="delete-epub"]').forEach((e=>{e.addEventListener("click",(e=>{e.preventDefault(),fcn_delete_epub(e.target.dataset.name)}))})),(button=_$$$("fictioneer-button-og-upload"))&&button.addEventListener("click",fcn_ogMediaUpload),(button=_$$$("fictioneer-seo-title"))&&(fcn_update_seo_title_chars(),button.addEventListener("keyup",fcn_update_seo_title_chars)),(button=_$$$("fictioneer-button-seo-og-image-remove"))&&button.addEventListener("click",fcn_remove_seo_og_image),_$$("[data-confirm-dialog]").forEach((e=>{e.addEventListener("click",(e=>{fcn_confirmIt(e)}))})),_$("#wp-admin-bar-logout a")?.addEventListener("click",(()=>{localStorage.removeItem("fcnProfileAvatar"),localStorage.removeItem("fcnUserData"),localStorage.removeItem("fcnAuth"),localStorage.removeItem("fcnBookshelfContent"),localStorage.removeItem("fcnChapterBookmarks")})),_$(".fictioneer-settings")?.addEventListener("click",(e=>{const t=e.target.closest("[data-click]"),a=t?.dataset.click;if(a)switch(a){case"warning-dialog":confirm(t.dataset.dialog)||e.preventDefault()}})),_$$("[data-dialog-target]").forEach((e=>{e.addEventListener("click",(e=>{_$$$(e.currentTarget.dataset.dialogTarget)?.showModal()}))})),_$$('button[formmethod="dialog"][value="cancel"]').forEach((e=>{e.addEventListener("click",(e=>{e.preventDefault(),e.currentTarget.closest("dialog").close()}))})),_$$("dialog").forEach((e=>{e.addEventListener("mousedown",(e=>{"dialog"===e.target.tagName.toLowerCase()&&e.target.close()}))})),_$$(".fictioneer-meta-field__image-upload, .fictioneer-meta-field__image-replace").forEach((e=>{e.addEventListener("click",fcn_imageMediaUpload)})),_$$(".fictioneer-meta-field__image-remove").forEach((e=>{e.addEventListener("click",(e=>{e.preventDefault();const t=e.currentTarget.closest('[data-target="fcn-meta-field-image"]');t.querySelector('[data-target="fcn-meta-field-image-id"]').value="",t.querySelector(".fictioneer-meta-field__image-display").style.backgroundImage="",t.querySelector(".fictioneer-meta-field__image-upload").classList.remove("hidden"),t.querySelector(".fictioneer-meta-field__image-actions").classList.add("hidden")}))})),_$$('[data-target="fcn-meta-field-ebook-upload"], [data-target="fcn-meta-field-ebook-replace"]').forEach((e=>{e.addEventListener("click",fcn_ebookMediaUpload)})),_$$('[data-target="fcn-meta-field-ebook-remove"]').forEach((e=>{e.addEventListener("click",fcn_ebookMediaRemove)})),_$$('[data-target="fcn-meta-field-tokens-add"]').forEach((e=>{e.addEventListener("change",(e=>{e.preventDefault();fcn_tokensToggle(parseInt(e.currentTarget.value),e.currentTarget.closest('[data-target="fcn-meta-field-tokens"]'))}))})),_$$('[data-target="fcn-meta-field-tokens-track"]').forEach((e=>{e.addEventListener("click",(e=>{e.preventDefault();const t=e.target.closest(".fictioneer-meta-field__token"),a=e.target.closest(".fictioneer-meta-field__token-button"),o=e.target.closest(".fictioneer-meta-field");t&&a?fcn_tokensToggle(parseInt(t.dataset.id),t.closest('[data-target="fcn-meta-field-tokens"]')):o&&o.querySelector("select").focus()}))})),_$$(".fictioneer-meta-field__icon-button[data-value]").forEach((e=>{e.addEventListener("click",(e=>{e.preventDefault(),fcn_insertIconClass(e.currentTarget)}))})),_$$(".fictioneer-meta-field__fa-icon").forEach((e=>{e.addEventListener("click",(e=>{const t=e.currentTarget.closest(".fictioneer-meta-field").querySelector(".fictioneer-meta-field__button-grid");t.classList.toggle("hidden",!t.classList.contains("hidden"))}))})),document.addEventListener("DOMContentLoaded",(()=>{wp.data?.dispatch("core/editor").lockPostSaving("requiredValueLock"),fcn_checkRequiredFields(),_$$(".fictioneer-meta-field [required]").forEach((e=>{const t=e.closest(".fictioneer-meta-field");t.classList.add("pending-validation"),e.addEventListener("input",(()=>{fcn_checkRequiredFields()})),e.addEventListener("input",(()=>{t.classList.remove("pending-validation")}),{once:!0})})),wp.data?.subscribe((()=>{_$$(".fictioneer-meta-field [required]").forEach((e=>{e.closest(".fictioneer-meta-field").classList.toggle("fictioneer-meta-field--invalid",""===e?.value.trim())}))}))})),document.addEventListener("DOMContentLoaded",(()=>{_$$('[data-action="select-story"]').forEach((e=>{fcn_setGroupDataList(e),e.addEventListener("change",(e=>{fcn_setGroupDataList(e.currentTarget)}))}))}));