✦Made byMr Menoura Ben Moussa✦
MBM
Primary English StudioTeaching · Planning · Marking · ALO
TEACHER WORKSPACE · 2026 / 2027

English Teaching Timetable

Build your weekly English teaching timetable with a clear school-day layout. Lessons are positioned automatically on the exact time scale while keeping the flexible duration and 15-minute precision.

AUTOMATIC LESSONS15-minute precision
⚡ Lesson BuilderFill → Preview → Generate
⚡
Automatic lesson blockSunday · 3 PS · Section 1 · 08:00–09:00 · English
✓ Duration locked
Choose table colour
▦ Weekly TimetableEvery generated lesson is positioned automatically on the exact time scale.
DAY
Morning (8:00 - 12:00)Afternoon (12:00 - 17:00)
Tip: exact lesson duration, 15-minute precision, automatic stretching and overlap protection remain unchanged.
TEACHER WORKSPACE

Platform Statistics

A quick overview of the platform modules and stored classroom workspace.

Active levels3 · 4 · 5 PS
Sections configured12 sections
Learners represented480 learners
ModulesLesson · Marking · Timetable
Choose a module above · Data remains on this device
'; return html; } function addToolbar(){const out=document.querySelector('.generatedBlueprint');if(!out||out.dataset.v115==='1')return;out.dataset.v115='1';const actions=out.querySelector('.outputActions');if(!actions)return; const b=(txt,fn,title)=>{const x=document.createElement('button');x.type='button';x.textContent=txt;x.title=title||txt;x.onclick=fn;return x}; const edit=actions.querySelector('button'); const save=b('✓ Save Table Edits',()=>{const w=tableWrap();if(!w)return;try{localStorage.setItem(key(),w.innerHTML);w.contentEditable='false';toastPlan('Planning table saved on this device')}catch(e){toastPlan('Could not save planning table')}}); const reset=b('↺ Reset Edits',()=>{try{localStorage.removeItem(key());location.reload()}catch(e){}}); const print=b('⎙ Print',()=>{const h=printable();if(!h)return;const w=window.open('','_blank');if(!w){toastPlan('Allow pop-ups to print');return}w.document.write(h);w.document.close()}); const pdf=b('⇩ Download PDF',()=>{ const wrap=tableWrap(),js=window.jspdf?.jsPDF;if(!wrap||!js){print.click();return} const table=wrap.querySelector('table');if(!table){print.click();return} const rows=[...table.querySelectorAll('tr')];if(!rows.length){print.click();return} const doc=new js({unit:'pt',format:'a4',orientation:'landscape'}); const title=(out.querySelector('.outputHead h3')?.innerText||'Lesson Plan').trim(); doc.setFillColor(245,219,242);doc.roundedRect(24,18,548,30,9,9,'F');doc.setTextColor(24,31,77);doc.setFont('helvetica','bold');doc.setFontSize(15);doc.text(title.slice(0,110),300,38,{align:'center'}); const head=rows[0],body=rows.slice(1); const bg=(el)=>{const c=getComputedStyle(el).backgroundColor||'';const m=c.match(/rgba?\((\d+)[, ]+(\d+)[, ]+(\d+)/);return m?[+m[1],+m[2],+m[3]]:[255,255,255]}; const fg=(el)=>{const c=getComputedStyle(el).color||'';const m=c.match(/rgba?\((\d+)[, ]+(\d+)[, ]+(\d+)/);return m?[+m[1],+m[2],+m[3]]:[28,31,77]}; const data=body.map(r=>[...r.children].map(c=>(c.innerText||'').trim())); const headData=[head.map(c=>(c.innerText||'').trim())]; if(typeof doc.autoTable==='function'){ doc.autoTable({head:headData,body:data,startY:60,theme:'grid',styles:{fontSize:6,cellPadding:4,valign:'middle',lineColor:[160,175,185],lineWidth:.35,textColor:[28,31,77]},headStyles:{fillColor:[118,146,183],textColor:[255,255,255],fontStyle:'bold'},alternateRowStyles:{fillColor:[252,249,252]},didParseCell:d=>{ const tr=d.row.index===0?rows[0]:rows[d.row.index];const cell=tr?.children?.[d.column.index];if(!cell)return; const b=bg(cell),f=fg(cell);if(d.section==='body'&&b[0]+b[1]+b[2]<740)d.cell.styles.fillColor=b;if(d.section==='body')d.cell.styles.textColor=f; } }); } else {doc.setFontSize(6);doc.text(doc.splitTextToSize(rows.map(r=>r.map(c=>(c.innerText||'').trim()).join(' | ')).join('\n'),770),24,62)} doc.save('lesson-plan-designed.pdf'); }); const share=b('↗ Share',async()=>{const wrap=tableWrap();if(!wrap)return;const text=wrap.innerText||'';const blob=new Blob([text],{type:'text/plain'});const file=new File([blob],'planning-document.txt',{type:'text/plain'});try{if(navigator.share&&(!navigator.canShare||navigator.canShare({files:[file]}))){await navigator.share({title:'Planning Document',files:[file]});return}const a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download=file.name;a.click();setTimeout(()=>URL.revokeObjectURL(a.href),1200)}catch(e){if(e?.name!=='AbortError')toastPlan('Share cancelled or unavailable')}}); actions.append(save,reset,print,pdf,share);restore(); if(edit)edit.addEventListener('click',()=>{setTimeout(()=>{const w=tableWrap();if(w)w.contentEditable='true'},0)}); } function toastPlan(t){let x=document.getElementById('toast');if(!x){x=document.createElement('div');x.id='toast';x.style.cssText='position:fixed;right:18px;bottom:18px;z-index:9999;background:#102a43;color:#fff;padding:12px 16px;border-radius:10px;font-weight:800';document.body.appendChild(x)}x.textContent=t;setTimeout(()=>x.remove(),2200)} const mo=new MutationObserver(()=>{addToolbar();restore()});mo.observe(document.body,{childList:true,subtree:true});setTimeout(addToolbar,400);setTimeout(addToolbar,1200); })();