From 934919e39234463234855cb2ff37b581dc601c96 Mon Sep 17 00:00:00 2001 From: nmemmert <67961292+nmemmert@users.noreply.github.com> Date: Tue, 21 Jul 2026 16:50:01 -0400 Subject: [PATCH] Include assignment body and quiz questions in print course output MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Course detail API now returns item body text and quiz questions. Print course renders body paragraphs and numbered quiz questions with lettered choices (correct answers marked with ✓). Co-Authored-By: Claude Sonnet 4.6 --- public/admin.js | 50 +++++++++++++++++++++++++++++++++++++------------ server.js | 10 ++++++++-- 2 files changed, 46 insertions(+), 14 deletions(-) diff --git a/public/admin.js b/public/admin.js index f189528..fee477a 100644 --- a/public/admin.js +++ b/public/admin.js @@ -959,25 +959,51 @@ async function printMonthReport(studentId, monthMonday, monthRef) { async function printCourse(courseId) { const course = await api(`/api/admin/courses/${courseId}`); + + function renderItemBody(it) { + let html = ''; + if (it.body) { + html += `
${it.body.split(/\n\n+/).map((p) => `

${esc(p.trim())}

`).join('')}
`; + } + if (it.type === 'quiz' && it.questions?.length) { + html += `
    ${it.questions.map((q, i) => { + const choices = q.choices?.length + ? `` + : ''; + return `
  1. ${esc(q.prompt)}${choices}
  2. `; + }).join('')}
`; + } + return html; + } + const unitBlocks = course.units.map((u) => { - const items = u.items.map((it) => - `${TYPE_ICON[it.type] || ''} ${esc(it.title)}${TYPE_LABEL[it.type] || ''}` - ).join(''); - return `

${esc(u.name)}

- ${items || ''}
ItemType
No items
`; + const items = u.items.map((it) => ` +
+
${TYPE_ICON[it.type] || ''} ${esc(it.title)} ${TYPE_LABEL[it.type] || ''}${it.points ? ` ${it.points} pts` : ''}
+ ${renderItemBody(it)} +
`).join(''); + return `

${esc(u.name)}

${items || '

No items.

'}
`; }).join(''); const win = window.open('', '_blank'); win.document.write(`${esc(course.name)} -

${esc(course.name)}${course.subject ? ` — ${esc(course.subject)}` : ''}

+

${esc(course.name)}${course.subject ? ` — ${esc(course.subject)}` : ''}

${unitBlocks || '

No units in this course.

'}