fictioneer/js/admin.min.js
2023-09-30 14:21:12 +02:00

1 line
8.2 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 n=_$$("[data-action-purge-all-schemas]");null===t&&n.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)n.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),o=t>0?` ${t} %`:"";n.forEach((e=>{e.innerHTML=e.dataset.disableWith+o})),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 n=prompt(t);n?n.toLowerCase()!=a.toLowerCase()&&e.preventDefault():e.preventDefault()}function fcn_mediaUpload(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_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),n=t.querySelector('[data-target="fcn-meta-field-tokens-track"]'),o=t.querySelector('[data-target="fcn-meta-field-tokens-values"]'),c=fcn_splitList(o.value).filter((e=>!isNaN(e))).map((e=>Math.abs(parseInt(e)))),i=c.indexOf(e);-1===i?c.push(e):c.splice(i,1),o.value=c.join(", "),n.innerHTML="",c.forEach((e=>{const t=fcn_sanitizeHTML(a[e]?a[e]:e);n.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}`))}_$$("[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"purge-all-epubs":case"purge-all-schemas":case"purge-all-meta":case"reset-post-relationship-registry":confirm(t.dataset.prompt)||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_mediaUpload)})),_$$(".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-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"),n=e.target.closest(".fictioneer-meta-field");t&&a?fcn_tokensToggle(parseInt(t.dataset.id),t.closest('[data-target="fcn-meta-field-tokens"]')):n&&n.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"))}))}));