From 794c2989a0fdefc74cd3fcb144adafc97116c707 Mon Sep 17 00:00:00 2001 From: Vladislav Kopnin Date: Thu, 8 Oct 2026 10:28:34 +0300 Subject: [PATCH] Variant distribution: treat redirect as success, refresh modal in place, toasts above modal (inside dialog); asset v32 --- web/src/main/resources/static/css/app.css | 2 +- .../main/resources/static/js/admin-group.js | 26 ++++++++++++++++--- .../main/resources/templates/admin/group.html | 13 +++++----- .../main/resources/templates/admin/lab.html | 2 +- .../resources/templates/fragments/base.html | 24 ++++++++--------- .../resources/templates/learn/article.html | 2 +- .../resources/templates/learn/chapter.html | 2 +- .../main/resources/templates/learn/index.html | 4 +-- .../resources/templates/learn/section.html | 2 +- .../main/resources/templates/student/lab.html | 2 +- 10 files changed, 49 insertions(+), 30 deletions(-) diff --git a/web/src/main/resources/static/css/app.css b/web/src/main/resources/static/css/app.css index e43f0d3..5ea7b4e 100644 --- a/web/src/main/resources/static/css/app.css +++ b/web/src/main/resources/static/css/app.css @@ -468,7 +468,7 @@ code.code { padding: 0.125rem 0.5rem; border-radius: var(--radius-xs); font-fami .cell-btn.st.dim::before { background: var(--c-border-strong); } .mini-count { font-size: 0.72rem; margin-left: 0.15rem; color: var(--c-text-muted); } .defense-cell-timer { font-variant-numeric: tabular-nums; } -.lab-head-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.25rem; } +.lab-head-actions { display: flex; gap: 0.2rem; } .btn btn-secondary btn-sm p-2 { display: inline-flex; align-items: center; justify-content: center; min-width: 1.5rem; height: 1.5rem; padding: 0 0.3rem; cursor: pointer; diff --git a/web/src/main/resources/static/js/admin-group.js b/web/src/main/resources/static/js/admin-group.js index a87776a..6097e37 100644 --- a/web/src/main/resources/static/js/admin-group.js +++ b/web/src/main/resources/static/js/admin-group.js @@ -209,7 +209,20 @@ function attachCommentAutocomplete(input) { /* ---------- Удаление подсказки комментария и всплывающие уведомления ---------- */ function showToast(text, kind) { - var host = $id('toast-host'); + // уведомления должны быть видны поверх открытой модалки: кладём их в сам + // (элемент верхнего слоя), иначе они оказываются под ним + var dlg = document.querySelector('dialog[open]'); + var host = null; + if (dlg) { + host = dlg.querySelector('.toast-host'); + if (!host) { + host = document.createElement('div'); + host.className = 'toast-host'; + dlg.appendChild(host); + } + } else { + host = $id('toast-host'); + } if (!host) return; var toast = document.createElement('div'); toast.className = 'toast-item ' + (kind === 'error' ? 'toast-error' : 'toast-success'); @@ -663,8 +676,15 @@ document.addEventListener('submit', function (ev) { var btn = form.querySelector('button[type="submit"]'); if (btn) btn.disabled = true; fetch(form.action, { method: 'POST', body: new FormData(form), headers: { 'X-Requested-With': 'fetch' } }) - .then(function (r) { if (r.redirected) throw new Error('сессия истекла — обновите страницу'); return r.text(); }) - .then(function () { return refreshAssignModal(form.getAttribute('data-refresh')); }) + .then(function (r) { if (!r.ok) throw new Error('HTTP ' + r.status); return r.text(); }) + .then(function (html) { + // эндпоинты отвечают редиректом на страницу лабы — это норма, не ошибка; + // flash-сообщение забираем из отданного HTML + var err = /]*class="[^"]*toast-item toast-error[^"]*"[^>]*>\s*([^<]*)([^<]*)<\/span>/.exec(html); + showToast(err ? err[1].trim() : (ok ? ok[1].trim() : 'Сохранено'), err ? 'error' : 'success'); + return refreshAssignModal(form.getAttribute('data-refresh')); + }) .catch(function (e) { showToast('Не удалось сохранить: ' + e.message, 'error'); }) .finally(function () { if (btn) btn.disabled = false; }); }); diff --git a/web/src/main/resources/templates/admin/group.html b/web/src/main/resources/templates/admin/group.html index edaf529..399cb12 100644 --- a/web/src/main/resources/templates/admin/group.html +++ b/web/src/main/resources/templates/admin/group.html @@ -44,10 +44,10 @@ ЛР —
-
@@ -64,10 +64,9 @@
- - 0 + th:title="|Скачать решения по ЛР ${lab.number}|">⤓0
@@ -343,7 +342,7 @@
- + diff --git a/web/src/main/resources/templates/admin/lab.html b/web/src/main/resources/templates/admin/lab.html index c04349f..0a59d6d 100644 --- a/web/src/main/resources/templates/admin/lab.html +++ b/web/src/main/resources/templates/admin/lab.html @@ -196,7 +196,7 @@ - + diff --git a/web/src/main/resources/templates/fragments/base.html b/web/src/main/resources/templates/fragments/base.html index e21af28..1f653a7 100644 --- a/web/src/main/resources/templates/fragments/base.html +++ b/web/src/main/resources/templates/fragments/base.html @@ -13,22 +13,22 @@ - + - - - - - - + + + + + + - - - - - + + + + +
diff --git a/web/src/main/resources/templates/learn/article.html b/web/src/main/resources/templates/learn/article.html index fed6351..bb1b0a6 100644 --- a/web/src/main/resources/templates/learn/article.html +++ b/web/src/main/resources/templates/learn/article.html @@ -138,7 +138,7 @@
- + diff --git a/web/src/main/resources/templates/learn/chapter.html b/web/src/main/resources/templates/learn/chapter.html index b50fab1..a72c62f 100644 --- a/web/src/main/resources/templates/learn/chapter.html +++ b/web/src/main/resources/templates/learn/chapter.html @@ -183,7 +183,7 @@ - + diff --git a/web/src/main/resources/templates/learn/index.html b/web/src/main/resources/templates/learn/index.html index 20fa75f..ad1b7f9 100644 --- a/web/src/main/resources/templates/learn/index.html +++ b/web/src/main/resources/templates/learn/index.html @@ -236,8 +236,8 @@ - - + + diff --git a/web/src/main/resources/templates/learn/section.html b/web/src/main/resources/templates/learn/section.html index e24b5d7..1a21d32 100644 --- a/web/src/main/resources/templates/learn/section.html +++ b/web/src/main/resources/templates/learn/section.html @@ -143,7 +143,7 @@ - + diff --git a/web/src/main/resources/templates/student/lab.html b/web/src/main/resources/templates/student/lab.html index 1d92fcc..20d8e14 100644 --- a/web/src/main/resources/templates/student/lab.html +++ b/web/src/main/resources/templates/student/lab.html @@ -107,7 +107,7 @@

Ожидайте преподавателя с проверкой.

- +