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)