/** * Access Page - Access items management with full table features */ import { __ } from '@wordpress/i18n'; import DataTable from '../components/shared/DataTable'; import './AdminPages.css'; // SweetAlert2 is loaded via WordPress (global scope) const Swal = window.Swal; export default function AccessPage() { const ajaxUrl = window.formipayAdmin?.ajaxUrl || '/wp-admin/admin-ajax.php'; const nonce = window.formipayAdmin?.nonce || ''; const handleDelete = async (id) => { const result = await Swal.fire({ icon: 'info', html: __('Do you want to delete this item?', 'formipay'), showCancelButton: true, confirmButtonText: __('Delete Permanently', 'formipay'), cancelButtonText: __('Cancel', 'formipay'), }); if (result.isConfirmed) { await fetch(`${ajaxUrl}?action=formipay-delete-access-item`, { method: 'POST', credentials: 'same-origin', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ id, _wpnonce: nonce, }), }); window.location.reload(); } }; const handleDuplicate = async (id) => { const result = await Swal.fire({ icon: 'info', html: __('Do you want to duplicate this item?', 'formipay'), showCancelButton: true, confirmButtonText: __('Confirm', 'formipay'), cancelButtonText: __('Cancel', 'formipay'), }); if (result.isConfirmed) { await fetch(`${ajaxUrl}?action=formipay-duplicate-access-item`, { method: 'POST', credentials: 'same-origin', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ id, _wpnonce: nonce, }), }); window.location.reload(); } }; const columns = [ { key: 'ID', label: __('ID', 'formipay'), render: (row) => #{row.ID} }, { key: 'title', label: __('Title', 'formipay'), render: (row) => ( <> {row.title || row.post_title || __('Untitled', 'formipay')} {__('edit', 'formipay')} {' | '} {' | '} ) }, { key: 'product_name', label: __('Product', 'formipay'), }, { key: 'status', label: __('Status', 'formipay'), render: (row) => { const status = row.post_status || row.status || 'unknown'; const statusLabel = { publish: __('Published', 'formipay'), draft: __('Draft', 'formipay'), }[status] || status; return ( {statusLabel} ); } }, { key: 'date', label: __('Date', 'formipay'), render: (row) => { const date = row.post_date || row.date; if (!date) return '-'; return new Date(date).toLocaleDateString(); } }, ]; return (
); }