Add Worksheet item type with paste-and-parse authoring, digital submission, and print-blank

- New `worksheet` item type: admin pastes raw worksheet text, parser auto-detects fill-in-the-blank (___), true/false (T   F   ...), section headers (Part N —), and short-answer questions
- Admin editor shows each parsed question with inputs to set correct answers for FITB and T/F; short answers are marked parent-grades
- Kid view renders FITB as inline underline inputs, T/F as tap-to-toggle T/F buttons, and short answer as a textarea; Name/Date header auto-populated
- Auto-grades T/F (exact) and FITB (case-insensitive); worksheets with short answers go to grading queue as status=done
- Print blank button opens a formatted print window with underlines, circled T/F, and ruled lines for short answers
- "I handed in my paper copy" button lets kids mark a printed worksheet as turned in without digital submission, queuing it for parent grading

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
nmemmertandClaude Sonnet 4.6 committed 2026-08-03 15:59:13 -04:00
1 parent 9abb107096
commit 6f73acd03e
6 files changed
+720 -8

No files matched your search

+20
View File
@@ -232,6 +232,26 @@
</div>
</section>
<!-- Worksheet -->
<section id="view-worksheet" class="view" hidden>
<button class="back-btn" data-back="worksheet">← Back</button>
<div class="item-card">
<p class="item-kicker" id="ws-kicker"></p>
<h1 id="ws-title"></h1>
<div id="ws-header" class="ws-header" hidden>
<span>Name: <input id="ws-name" class="ws-name-input" type="text" autocomplete="name" placeholder="Your name"></span>
<span>Date: <input id="ws-date" class="ws-date-input" type="text"></span>
</div>
<form id="ws-form" autocomplete="off"></form>
<div id="ws-result" class="status-banner" hidden></div>
<div class="ws-actions" id="ws-actions" hidden>
<button id="ws-submit-btn" class="check-btn">Submit ✓</button>
<button id="ws-print-btn" class="secondary">🖨 Print blank</button>
<button id="ws-paper-btn" class="secondary">📄 I handed in my paper copy</button>
</div>
</div>
</section>
<script src="app.js"></script>
</body>
</html>