import re
with open("backend/app/Views/CurriculumStudio.php", "r") as f:
content = f.read()
new_script = """ async function handleRealPdfUpload(input) {
if (!input.files || !input.files[0]) return;
const file = input.files[0];
const btn = document.getElementById('btn_upload_pdf');
const desc = document.getElementById('upload_status_desc');
btn.disabled = true;
btn.innerHTML = '⏳ جاري الرفع...';
desc.textContent = `جاري رفع ملف [${file.name}] وبدء عملية استخراج المناهج...`;
const formData = new FormData();
formData.append('pdf_file', file);
try {
const res = await fetch('/api/curriculum/upload-pdf', {
method: 'POST',
body: formData
});
const data = await res.json();
if (res.ok && data.status === 'processing') {
// Start Polling
pollTaskStatus(data.task_id, file.name);
} else if (res.ok && data.status === 'success') {
// Fallback if it returned sync
processSuccessData(data, file.name);
} else {
alert('⚠️ ' + (data.message || 'فشلت معالجة الملف'));
resetUploadBtn();
}
} catch (err) {
console.error('PDF Upload error:', err);
alert('حدث خطأ في الاتصال بالخادم أثناء رفع الملف.');
resetUploadBtn();
}
}
async function pollTaskStatus(taskId, fileName) {
const btn = document.getElementById('btn_upload_pdf');
const desc = document.getElementById('upload_status_desc');
try {
const res = await fetch(`/api/curriculum/upload-status?task_id=${taskId}`);
if (!res.ok) throw new Error("Network response was not ok");
const state = await res.json();
if (state.status === 'completed') {
desc.textContent = `تم الانتهاء بنجاح! تم استخراج المنهج بالكامل لـ [${fileName}]`;
btn.innerHTML = '✅ اكتمل التفريغ';
setTimeout(() => { resetUploadBtn(); }, 3000);
if (state.tree) {
window.CURRICULUM_TREE = state.tree;
currentFilePath = state.active_file || '';
renderCurriculumTree(state.tree);
if (state.active_file) {
selectLesson(state.active_file, 'الدرس المستخرج', 'المسار التعليمي', []);
fetchLessonContent(state.active_file);
}
} else {
// Reload tree completely
loadCurriculumTree();
}
} else if (state.status === 'error') {
alert('⚠️ فشل في معالجة الملف: ' + state.message);
resetUploadBtn();
} else {
// Still processing
btn.innerHTML = `⏳ ${state.progress}% | ${state.status}`;
desc.textContent = state.message || "جاري المعالجة بالذكاء الاصطناعي... قد يستغرق دقيقة أو أكثر";
setTimeout(() => pollTaskStatus(taskId, fileName), 2500); // poll every 2.5 seconds
}
} catch(e) {
setTimeout(() => pollTaskStatus(taskId, fileName), 3000);
}
}
function resetUploadBtn() {
const btn = document.getElementById('btn_upload_pdf');
const desc = document.getElementById('upload_status_desc');
btn.disabled = false;
btn.innerHTML = '📄 رفع واستخراج المنهاج (PDF)';
document.getElementById('curriculum_pdf_input').value = '';
}
"""
content = re.sub(r'async function handleRealPdfUpload\(input\) \{.*?(?=async function selectLesson|function renderCurriculumTree)', new_script + '\n ', content, flags=re.DOTALL)
with open("backend/app/Views/CurriculumStudio.php", "w") as f:
f.write(content)