Abacus Level-1 BookGreat things are on the horizon
Something big is brewing! Our store is in the works and will be launching soon!
(function () { 'use strict'; document.addEventListener('DOMContentLoaded', function() { var dash = document.getElementById('elp-student-dashboard'); if (!dash) return; var CFG = window.ELP_DASH_CFG || {}; // 1. Handle Avatar Upload (Hover Overlay Method) var avatarWrap = document.getElementById('elp-avatar-trigger'); var avatarInput = document.getElementById('elp-avatar-input'); var avatarImg = document.getElementById('elp-dash-avatar'); if (avatarWrap) { avatarWrap.addEventListener('click', function() { avatarInput.click(); }); } if (avatarInput) { avatarInput.addEventListener('change', function(e) { var file = e.target.files[0]; if (!file) return; var reader = new FileReader(); reader.onload = function(event) { var base64Image = event.target.result; var overlay = document.querySelector('.elp-dash-avatar-overlay'); if (overlay) { overlay.innerHTML = 'Uploading...'; overlay.style.opacity = '1'; } fetch(CFG.restUrl + '/dashboard/update-avatar', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-WP-Nonce': CFG.nonce }, body: JSON.stringify({ image: base64Image }) }) .then(r => r.json()) .then(res => { if (res.success) { var newUrl = res.url + '?t=' + new Date().getTime(); avatarImg.src = newUrl; var headerAvatar = document.querySelector('.elp-header-avatar'); if (headerAvatar) headerAvatar.src = newUrl; } else { alert(res.message || 'Upload failed.'); } if (overlay) overlay.innerHTML = 'Change Photo'; }) .catch(() => { alert('Network error.'); if (overlay) overlay.innerHTML = 'Change Photo'; }); }; reader.readAsDataURL(file); }); } // 2. Fetch Real Recent Exam Attempts (Enhanced Error Reporting) var examList = document.getElementById('elp-recent-exams'); if (examList) { fetch(CFG.restUrl + '/dashboard/recent-exams', { headers: { 'X-WP-Nonce': CFG.nonce } }) .then(r => r.json().then(data => ({ status: r.status, body: data }))) .then(res => { if (res.status >= 400) { var errMsg = res.body.message || 'Failed to load exams.'; examList.innerHTML = '
Something big is brewing! Our store is in the works and will be launching soon!
Abacus Level-1 Book