تخطَّ إلى المحتوى
Skip to content
تخطَّ إلى المحتوى
Skip to content
مجلس طلاب خطوة
Khotwa Student Council
القائمة
Menu
الرئيسية
Home
البرامج
Programs
الأخبار والفعاليات
News & Events
📰 الأخبار
📰 News
📅 الفعاليات
📅 Events
🗓️ التقويم
🗓️ Calendar
التطوير والتدريب
Development & Training
🎓 الدورات والورش
🎓 Courses & Workshops
❤️ الفرص التطوعية
❤️ Volunteer Opportunities
عن المجلس
About Council
معلومات عنا
About Us
👥 من نحن
👥 About Us
📸 معرض الصور
📸 Gallery
❓ الأسئلة الشائعة
❓ FAQ
اتصل بنا
Contact
English
عربي
تقويم الفعاليات
Events Calendar
جدول الفعاليات القادمة.
Schedule of upcoming events.
(function(){ // سنة الحقوق const y = document.getElementById('year'); if(y){ y.textContent = new Date().getFullYear(); } // منيو الموبايل + وصولية const menuBtn = document.getElementById('menu-toggle'); const primaryNav = document.getElementById('primary-nav'); const mq = window.matchMedia('(min-width:901px)'); function setMenu(open){ if(!menuBtn || !primaryNav) return; primaryNav.setAttribute('data-open', String(open)); menuBtn.setAttribute('aria-expanded', String(open)); primaryNav.setAttribute('aria-hidden', String(!open && !mq.matches)); if(open){ const focusable = primaryNav.querySelector('a,button'); (focusable || menuBtn).focus(); } } function initMenu(){ setMenu(false); if(primaryNav){ primaryNav.setAttribute('aria-hidden', mq.matches ? 'false' : 'true'); } } initMenu(); menuBtn?.addEventListener('click', ()=> setMenu(primaryNav.getAttribute('data-open')!=='true')); mq.addEventListener('change', e=>{ setMenu(false); primaryNav.setAttribute('aria-hidden', e.matches ? 'false' : 'true'); }); document.addEventListener('click', (e)=>{ const open = primaryNav.getAttribute('data-open')==='true'; const t = e.target; if(open && t instanceof Node && !primaryNav.contains(t) && !menuBtn.contains(t)){ setMenu(false); } }); document.addEventListener('keydown', e=>{ if(e.key==='Escape') setMenu(false); }); primaryNav.addEventListener('click', e=>{ const link = (e.target instanceof Element)? e.target.closest('a'):null; if(link) setMenu(false); }); // اللغة + تزامن العنوان + حفظ التفضيل const langBtn = document.getElementById('lang-toggle'); function currentLang(){ return localStorage.getItem('khotwa_lang')==='en' ? 'en' : 'ar'; } function setLang(lang){ document.querySelectorAll('[data-lang]').forEach(el=>{ const want = el.getAttribute('data-lang')===lang; el.hidden = !want; el.setAttribute('aria-hidden', String(!want)); }); document.documentElement.lang = (lang==='ar')?'ar':'en'; document.documentElement.dir = (lang==='ar')?'rtl':'ltr'; if(langBtn){ langBtn.textContent = (lang==='ar') ? 'English' : 'العربية'; langBtn.setAttribute('aria-pressed', String(lang!=='ar')); } const t = document.querySelector('title[data-lang="'+lang+'"]'); if(t) document.title = t.textContent.trim(); localStorage.setItem('khotwa_lang', lang); // بعد تغيير اللغة، نحدّث تنسيق التاريخ في التقويم loadEvents(); } setLang(currentLang()); langBtn?.addEventListener('click', ()=> setLang(currentLang()==='ar' ? 'en' : 'ar')); // تحميل الفعاليات من Backend API async function loadEvents(){ const list = document.getElementById('events'); if(!list) return; list.setAttribute('aria-busy','true'); try{ const items = await KhotwaAPI.getEvents(); list.innerHTML = ''; if(items.length===0){ list.innerHTML = `
لا توجد فعاليات حالياً.
No events at the moment.
`; list.setAttribute('aria-busy','false'); injectEventsLD([]); return; } // أختار اليوم + أرتب حسب الأحدث القادم const today = new Date(); const upcoming = items .map(ev => ({ ...ev, _start: ev.date ? new Date(ev.date) : null })) .filter(ev => ev._start && !isNaN(ev._start)) .sort((a,b)=> a._start - b._start) .filter(ev => ev._start >= today); if(upcoming.length===0){ list.innerHTML = `
لا توجد فعاليات حالياً.
No events at the moment.
`; list.setAttribute('aria-busy','false'); injectEventsLD([]); return; } const lang = document.documentElement.lang || 'ar'; const isEn = (lang === 'en'); const monthFmt = new Intl.DateTimeFormat(isEn?'en-AU':'ar-EG',{month:'long'}); const dateFmt = new Intl.DateTimeFormat(isEn?'en-AU':'ar-EG',{year:'numeric',month:'2-digit',day:'2-digit'}); const frag = document.createDocumentFragment(); upcoming.forEach(ev=>{ const d = ev._start; const li = document.createElement('li'); const titleAr = ev.title_ar || ev.title || ''; const titleEn = ev.title_en || ev.title || ''; li.innerHTML = `
${monthFmt.format(d)}
${new Intl.DateTimeFormat('en-AU',{month:'long'}).format(d)}
—
${titleAr}
${titleEn}
·
${dateFmt.format(d)}
${ev.location ? ` ·
${ev.location}
` : ''} ${ev.link ? ` ·
${isEn?'Details':'التفاصيل'}
` : ''} `; frag.appendChild(li); }); list.appendChild(frag); list.setAttribute('aria-busy','false'); // حقن JSON-LD منسّق للأحداث (SEO) injectEventsLD(upcoming); }catch(err){ console.error('فشل تحميل الفعاليات:', err); list.innerHTML = `
تعذّر تحميل الفعاليات. حاول لاحقاً.
Could not load events. Please try again later.
`; list.setAttribute('aria-busy','false'); injectEventsLD([]); } } // توليد JSON-LD للأحداث function injectEventsLD(events){ try{ document.querySelectorAll('script[data-gen="events-ld"]').forEach(s => s.remove()); if(!Array.isArray(events) || events.length===0) return; const graph = events.map(ev=>({ "@type":"Event", "name": ev.title_ar || ev.title_en || ev.title || "Khotwa Event", "startDate": ev.date, ...(ev.location ? { "location": { "@type":"Place", "name": ev.location } } : {}), ...(ev.link ? { "url": ev.link } : {}) })); const s = document.createElement('script'); s.type='application/ld+json'; s.dataset.gen='events-ld'; s.textContent = JSON.stringify({ "@context":"https://schema.org", "@graph": graph }); document.head.appendChild(s); }catch(e){} } // أول تحميل loadEvents(); })();