(function (window, document) { 'use strict'; function configFor(root) { try { return JSON.parse(root.getAttribute('data-identity-config') || '{}'); } catch (_) { return {}; } } function parseResponse(response) { var payload = response && (response.data !== undefined ? response.data : response.json); return payload && payload.data !== undefined ? payload.data : payload; } function errorMessage(error, fallback) { if (error && error.json) return error.json.message || fallback; return error && error.message ? error.message : fallback; } function init(root) { if (!root || root.dataset.identityBound === '1') return; root.dataset.identityBound = '1'; var config = configFor(root); var template = root.querySelector('[data-auth-modal-template]'); var runtime = window.AksrtModalRuntime; if (!template || !runtime || !window.AksrtRequest) return; function open() { runtime.open({ html: template.innerHTML, kind: 'identity', className: 'aksrt-identity-modal-shell', mobileBottom: true, onContent: function (_, session) { var shell = session && session.shell; var form = shell && shell.querySelector('[data-auth-create]'); if (!form) return; form.addEventListener('submit', function (event) { event.preventDefault(); var input = form.querySelector('[name="evidence[]"]'); var message = form.querySelector('[data-auth-message]'); var button = form.querySelector('[type="submit"]'); var files = input ? Array.prototype.slice.call(input.files || []) : []; if (files.length > 3) { if (message) message.textContent = '证明材料最多上传 3 张'; return; } if (files.some(function (file) { return file.size > 2 * 1024 * 1024; })) { if (message) message.textContent = '单张证明材料不能超过 2MB'; return; } if (button) button.disabled = true; if (message) message.textContent = ''; window.AksrtRequest.request(config.restBase, { method: 'POST', credentials: 'same-origin', headers: { 'X-WP-Nonce': config.nonce || '' }, body: new FormData(form), }).then(function (response) { var result = parseResponse(response); if (!result || result.success === false) throw new Error((result && result.message) || '申请提交失败,请稍后重试'); if (message) message.textContent = '申请已提交,请耐心等待管理员审核。'; var summary = root.querySelector('[data-auth-summary]'); if (summary) { summary.replaceChildren(); var pending = document.createElement('div'); pending.className = 'c-red mb10'; pending.textContent = '您的申请正在审核中,请耐心等待'; var name = document.createElement('div'); name.textContent = result.name || ''; summary.appendChild(pending); summary.appendChild(name); if (result.description) { var description = document.createElement('div'); description.className = 'muted-2-color mt10'; description.textContent = result.description; summary.appendChild(description); } if (result.message) { var applicationMessage = document.createElement('div'); applicationMessage.className = 'muted-2-color mt10'; applicationMessage.textContent = '申请说明:' + result.message; summary.appendChild(applicationMessage); } (Array.isArray(result.evidence) ? result.evidence : []).forEach(function (item) { if (!item || !item.url || !item.thumbnail_url) return; var link = document.createElement('a'); link.href = item.url; link.target = '_blank'; link.rel = 'noopener noreferrer'; var image = document.createElement('img'); image.src = item.thumbnail_url; image.alt = '身份认证证明材料'; image.width = 64; image.height = 64; image.style.objectFit = 'cover'; image.style.borderRadius = '4px'; link.appendChild(image); summary.appendChild(link); }); } if (runtime.getActive && runtime.getActive() === shell) runtime.close('submit'); }).catch(function (error) { if (message) message.textContent = errorMessage(error, '申请提交失败,请稍后重试'); }).finally(function () { if (button) button.disabled = false; }); }); }, }); } root.querySelectorAll('[data-auth-modal-open]').forEach(function (button) { button.addEventListener('click', function (event) { event.preventDefault(); open(); }); }); } window.AKSRTUserCenterAuth = { init: init }; })(window, document);