دراسات الصف الثالث الإعدادي
جاري تحميل الدروس…
const blogUrl = "https://www.egquiz.com"; const label = "دراسات 3 إعدادي"; const resultsPerPage = 8; const maxPostsToFetch = 500;
const gridContainer = document.querySelector(".cases-grid"); const loadMoreBtn = document.getElementById("loadMoreBtn"); const loadMoreContainer = document.querySelector(".load-more-container"); const searchInput = document.getElementById("searchInput");
let allCases = []; let displayedCount = 0;
// 1. دالة لإنشاء البطاقة (تم التعديل بإضافة حماية) function createCaseCard(post) { try { // ✨ إضافة حماية const postTitle = post.title.$t; // العنوان الأصلي كاحتياطي let postUrl = '#'; if (post.link) { for (let i = 0; i < post.link.length; i++) { if (post.link[i].rel === 'alternate') { postUrl = post.link[i].href; break; } } } const contentHtml = post.content ? post.content.$t : ''; const tempDiv = document.createElement('div'); tempDiv.innerHTML = contentHtml; // --- ✨ هذا هو التعديل المطلوب --- // 1. ابحث عن عنصر H1 داخل المحتوى const h1Element = tempDiv.querySelector('h1'); // 2. استخدم نص H1 إذا وجد، وإلا استخدم عنوان المنشور الأصلي كبديل const displayTitle = h1Element ? h1Element.textContent.trim() : postTitle; // --- نهاية التعديل --- const descriptionElement = tempDiv.querySelector('article.leasonx-container p'); const description = descriptionElement ? descriptionElement.textContent : "لا يتوفر وصف..."; post.searchableDescription = description.toLowerCase(); const publishedDate = new Date(post.published.$t); const formattedDate = new Intl.DateTimeFormat('ar-EG', { day: 'numeric', month: 'long', year: 'numeric' }).format(publishedDate); const caseCard = document.createElement('article'); caseCard.className = 'case-card'; caseCard.innerHTML = `
${displayTitle}
${description}
`; return caseCard;
} catch (error) { console.error("Error creating card for post:", post.title.$t, error); return null; // ✨ إرجاع null إذا فشلت هذه البطاقة } }
// 2. دالة لعرض مجموعة من القضايا (تم تعديلها للتحقق من null) function displayCases(cases) { cases.forEach(caseData => { const card = createCaseCard(caseData); if (card) { // ✨ فقط أضف البطاقة إذا تم إنشاؤها بنجاح gridContainer.appendChild(card); } }); }
// 3. دالة "عرض المزيد" (بدون تغيير) function loadMoreCases() { const remainingCases = allCases.slice(displayedCount, displayedCount + resultsPerPage); displayCases(remainingCases); displayedCount += remainingCases.length;
if (displayedCount >= allCases.length) { loadMoreContainer.style.display = 'none'; } }
// 4. وظيفة البحث (بدون تغيير) searchInput.addEventListener('input', function() { const searchTerm = this.value.toLowerCase().trim();
if (searchTerm === "") { gridContainer.innerHTML = ''; displayedCount = 0; loadMoreCases(); if (allCases.length > displayedCount) { loadMoreContainer.style.display = 'block'; } return; }
const filteredCases = allCases.filter(caseData => { const title = caseData.title.$t.toLowerCase(); const description = caseData.searchableDescription || ""; return title.includes(searchTerm) || description.includes(searchTerm); });
gridContainer.innerHTML = ''; loadMoreContainer.style.display = 'none';
if (filteredCases.length > 0) { displayCases(filteredCases); } else { gridContainer.innerHTML = '
لم يتم العثور على نتائج.
'; } });
// 5. جلب جميع القضايا عند تحميل الصفحة (بدون تغيير) function fetchAllCases() { const apiUrl = `${blogUrl}/feeds/posts/default/-/${encodeURIComponent(label)}?alt=json-in-script&max-results=${maxPostsToFetch}&callback=processAllCases`;
window.processAllCases = function(data) { allCases = data.feed.entry || [];
allCases.reverse();
gridContainer.innerHTML = '';
if (allCases.length > 0) { loadMoreCases();
if (allCases.length > displayedCount) { loadMoreContainer.style.display = 'block'; }
} else { gridContainer.innerHTML = '
لا توجد قضايا لعرضها حاليًا.
'; loadMoreContainer.style.display = 'none'; } };
const script = document.createElement('script'); script.src = apiUrl; document.body.appendChild(script); script.onload = () => document.body.removeChild(script); }
loadMoreBtn.addEventListener('click', loadMoreCases);
fetchAllCases(); });




