fix(homework): блок ДЗ — только задания с флагом is_homework; ясная подпись типа

(1) На /homework блок «Актуальные задания» и выпадашка загрузки теперь показывают
только задания с флагом ДЗ (is_homework). Обычные тесты/экзамены и не-ДЗ файлы сюда
не попадают. Выпадашка привязки — только типы upload/file (куда ученик реально сдаёт
файл), без тест-ДЗ и учебников.

(2) В конструкторе задания (classes.html) вкладка типа «Сдать работу» → «Загрузка
работы»: остальные вкладки — существительные-типы контента (Файл, Готовый тест), а
«Сдать работу» читалась как действие ученика. Это тип upload — ДЗ, куда ученик грузит
файл (saveAssignment: is_homework=1, count=1); сам тип нужен, поправлена только подпись.

Headless-смоук фильтра ДЗ 6/6.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-06-23 13:08:57 +03:00
parent a7f2ae9937
commit 73ba5a3530
2 changed files with 8 additions and 3 deletions
+1 -1
View File
@@ -794,7 +794,7 @@
<button class="atype-tab active" id="atype-random-btn" onclick="setAssignType('random')"><i data-lucide="shuffle" style="width:13px;height:13px;vertical-align:-2px"></i> Случайные</button> <button class="atype-tab active" id="atype-random-btn" onclick="setAssignType('random')"><i data-lucide="shuffle" style="width:13px;height:13px;vertical-align:-2px"></i> Случайные</button>
<button class="atype-tab" id="atype-fixtest-btn" onclick="setAssignType('fixed_test')"><i data-lucide="clipboard-list" style="width:13px;height:13px;vertical-align:-2px"></i> Готовый тест</button> <button class="atype-tab" id="atype-fixtest-btn" onclick="setAssignType('fixed_test')"><i data-lucide="clipboard-list" style="width:13px;height:13px;vertical-align:-2px"></i> Готовый тест</button>
<button class="atype-tab" id="atype-file-btn" onclick="setAssignType('file')"><i data-lucide="paperclip" style="width:13px;height:13px;vertical-align:-2px"></i> Файл</button> <button class="atype-tab" id="atype-file-btn" onclick="setAssignType('file')"><i data-lucide="paperclip" style="width:13px;height:13px;vertical-align:-2px"></i> Файл</button>
<button class="atype-tab" id="atype-upload-btn" onclick="setAssignType('upload')"><i data-lucide="upload" style="width:13px;height:13px;vertical-align:-2px"></i> Сдать работу</button> <button class="atype-tab" id="atype-upload-btn" onclick="setAssignType('upload')"><i data-lucide="upload" style="width:13px;height:13px;vertical-align:-2px"></i> Загрузка работы</button>
</div> </div>
<div id="a-type-hint" style="font-size:0.76rem;color:var(--text-3);margin:-12px 0 16px;padding:0 4px;line-height:1.5"> <div id="a-type-hint" style="font-size:0.76rem;color:var(--text-3);margin:-12px 0 16px;padding:0 4px;line-height:1.5">
Вопросы подбираются случайно из базы по выбранному предмету Вопросы подбираются случайно из базы по выбранному предмету
+7 -2
View File
@@ -552,7 +552,11 @@
const wrap = document.getElementById('hw-active-wrap'); const wrap = document.getElementById('hw-active-wrap');
const list = document.getElementById('hw-active-list'); const list = document.getElementById('hw-active-list');
if (!wrap || !list) return; if (!wrap || !list) return;
const active = _assignments.filter(a => !asgnDone(a)).sort((x, y) => urgencyScore(x) - urgencyScore(y)); // Только задания с флагом ДЗ (is_homework) — это страница «Домашние задания»,
// обычные тесты/экзамены сюда не попадают.
const active = _assignments
.filter(a => a.is_homework && !asgnDone(a))
.sort((x, y) => urgencyScore(x) - urgencyScore(y));
if (!active.length) { wrap.style.display = 'none'; return; } if (!active.length) { wrap.style.display = 'none'; return; }
wrap.style.display = ''; wrap.style.display = '';
document.getElementById('hw-active-count').textContent = active.length; document.getElementById('hw-active-count').textContent = active.length;
@@ -565,7 +569,8 @@
const sel = document.getElementById('hw-assignment-sel'); const sel = document.getElementById('hw-assignment-sel');
if (!sel) return; if (!sel) return;
sel.querySelectorAll('option[data-asgn]').forEach(o => o.remove()); sel.querySelectorAll('option[data-asgn]').forEach(o => o.remove());
list.filter(a => !a.session_id && !a.textbook_id).forEach(a => { // Привязать загрузку можно только к ДЗ, куда ученик сдаёт файл (тип upload/file).
list.filter(a => a.is_homework && (asgnType(a) === 'upload' || asgnType(a) === 'file')).forEach(a => {
const opt = document.createElement('option'); const opt = document.createElement('option');
opt.value = a.id; opt.value = a.id;
opt.textContent = a.title + (a.class_name && a.class_name !== 'Личное задание' ? ' · ' + a.class_name : ''); opt.textContent = a.title + (a.class_name && a.class_name !== 'Личное задание' ? ' · ' + a.class_name : '');