jQuery(document).ready(function ($) { function checkEditorHeader() { const editorHeader = $('.editor-header__settings'); if (editorHeader.length > 0) { clearInterval(editorHeaderInterval); const importExportButton = $( `` ); const slider = $( `
×

Import options go here. You can import your CSV file using the options provided.

` ); const sliders = $('.interface-navigable-region.interface-interface-skeleton__sidebar'); sliders.append(slider); let totalChildren = editorHeader.children().length; editorHeader.children().eq(totalChildren - 3).after(importExportButton); $('.import-export-btn').on('click', function () { $('.right-slider').css({ 'transform': 'translateX(0)', 'z-index': '10000', }); $('.interface-navigable-region.interface-interface-skeleton__sidebar').css({ 'width': '280px' }); }); $('.right-slider').on('click', '.close-slider', function () { $('.right-slider').css({ 'transform': 'translateX(100%)', 'z-index': '10', }); $('.interface-navigable-region.interface-interface-skeleton__sidebar').css({ 'width': '' }); }); $(document).on('click', function (event) { if (!$(event.target).closest('.right-slider, .import-export-btn').length) { if ($('.right-slider').css('transform') !== 'translateX(0px)') { $('.right-slider').css({ 'transform': 'translateX(100%)', 'z-index': '10', }); $('.interface-navigable-region.interface-interface-skeleton__sidebar').css({ 'width': '' }); } } }); $('.tab').on('click', function () { $('.tab').css('border-bottom', '2px solid transparent'); $(this).css('border-bottom', '2px solid #007cba'); const index = $(this).index(); $('.tab-content').hide(); $('.tab-content').eq(index).show(); }); $('#import-file').on('change', function () { const fileName = $(this).val().split('\\').pop(); if (!fileName) { $('#upload-import-btn').hide(); return; } $('.loading-bar').show(); $('#import-status').hide(); $('#upload-import-btn').hide().prop('disabled', true); let truncatedFileName = fileName; if (fileName.length > 10) { truncatedFileName = fileName.substring(0, 10) + '...csv'; } $('#import-status').show().text(`Importing ${truncatedFileName}`).css('color', '#017C01'); let progress = 0; const interval = setInterval(function () { progress += 10; $('#loading-progress').css('width', progress + '%'); if (progress >= 100) { clearInterval(interval); $('#import-status').text(`Success!`).css('color', '#017C01'); $('#upload-import-btn') .prop('disabled', false) .css({ 'margin-top': '20px', 'display': 'block', }) .show(); } }, 200); }); $('#upload-import-btn').on('click', function () { const fileInput = $('#import-file')[0]; const file = fileInput.files[0]; if (!file) { console.error("No file selected."); $('#import-status').text("No file selected. Please choose a file.").css('color', '#FF0000'); return; } const postId = wp.data.select('core/editor').getCurrentPostId(); const formData = new FormData(); formData.append('action', 'handle_import_csv'); formData.append('file', file); formData.append('post_id', postId); formData.append('securekey' , smack_nonce_object.nonce), $('#upload-import-btn').prop('disabled', true).text('Uploading...').css({ 'background-color': '#ccc', 'cursor': 'not-allowed', }); $.ajax({ url: ajaxurl, type: 'POST', data: formData, processData: false, contentType: false, success: function (response) { try { const data = JSON.parse(response) || response; if (data.success || response.success) { $('#smack-message').show().text(data.message).css('color', '#FFFFF'); $('#import-file').prop('disabled', true); $('#import-file').next().hide(); $('#upload-import-btn').hide(); $('#clear-btn').show(); $('#import-status').hide(); $('#smack-message').append(`

Click here for Redirect link

`); } else if (!data.success || !response.success) { $('#smack-imp-message').show().text(response.data.message || data.message).css('color', '#FFFFF'); } else { $('#smack-imp-message').show().text("Something Went to wrong" + response.data.message || data.message).css('color', '#FFFFF'); } } catch (e) { console.error("Error parsing JSON response:", e); $('#import-status').text("Upload Failed. Invalid response format.").css('color', '#FF0000'); } finally { $('#upload-import-btn').prop('disabled', false).text('Upload Import').css({ 'background-color': '#007cba', 'cursor': 'pointer', }); } }, error: function (xhr, status, error) { console.error("AJAX Error:", error); $('#import-status').text("Upload Failed. Please try again.").css('color', '#FF0000'); $('#upload-import-btn').prop('disabled', false).text('Upload Import').css({ 'background-color': '#007cba', 'cursor': 'pointer', }); } }); }); $('#export-btn').on('click', function () { const postId = wp.data.select('core/editor').getCurrentPostId(); const postTitle = wp.data.select('core/editor').getEditedPostAttribute('title'); $.ajax({ url: ajaxurl, type: 'POST', data: { action: 'handle_export_csv', post_id: postId, post_title: postTitle, securekey : smack_nonce_object.nonce, }, success: function (response) { console.log('response', 'color: #0088cc', typeof (response)); try { // Check if response is a string and parse it if needed const data = (typeof response === 'string') ? JSON.parse(response) : response; if (data.success) { const filePath = data.file_path; const fileName = filePath.split('/').pop(); const downloadLink = document.createElement('a'); downloadLink.href = filePath; downloadLink.download = fileName; document.body.appendChild(downloadLink); downloadLink.click(); document.body.removeChild(downloadLink); } else if (!data.success) { $('#smack-exp-message').show().text(response.data.message || data.message).css('color', '#FFFFF'); } else { $('#smack-exp-message').show().text(data.message || "Something went wrong").css('color', '#FFFFF'); } } catch (e) { console.error("Error parsing JSON response:", e); $('#smack-exp-message').show().text("Error parsing response").css('color', '#FFFFF'); } }, error: function (xhr, status, error) { console.error("AJAX Error:", error); } }); }); $('#clear-btn').on('click', function () { $('#import-file').val(''); $('#smack-message').text('') $('#import-status').text(''); $('#smack-message').hide(); $('#clear-btn').hide(); $('#upload-import-btn').show(); $('#import-file').prop('disabled', false); }); const customStyles = ` .import-export-btn:hover svg { fill: #006799; } .tab:hover { color: #007cba; border-bottom: 2px solid #007cba; } .slider-header .close-slider:hover { color: #007cba; } `; $('head').append(``); } } const editorHeaderInterval = setInterval(checkEditorHeader, 500); });