Style fixes: asset cache v=11, dashboard row alignment, drag handles back to dots

This commit is contained in:
2026-10-02 20:38:41 +03:00
parent 5ced01f70d
commit 743dd93bc2
10 changed files with 27 additions and 28 deletions

View File

@@ -625,7 +625,6 @@ th.th-filterable { padding-bottom: 0.35rem; }
cursor: grab; user-select: none; color: var(--c-text-muted); cursor: grab; user-select: none; color: var(--c-text-muted);
font-size: 1rem; line-height: 1; padding: 0.15rem 0; border-radius: var(--radius-sm); font-size: 1rem; line-height: 1; padding: 0.15rem 0; border-radius: var(--radius-sm);
} }
.drag-handle svg { width: 1rem; height: 1rem; display: block; margin: 0 auto; }
.drag-handle:hover { background: var(--c-bg); color: var(--c-text); } .drag-handle:hover { background: var(--c-bg); color: var(--c-text); }
.mini-btn.danger:hover { color: var(--c-accent); border-color: #dcb9be; background: var(--c-accent-soft); } .mini-btn.danger:hover { color: var(--c-accent); border-color: #dcb9be; background: var(--c-accent-soft); }
.drag-handle:active { cursor: grabbing; } .drag-handle:active { cursor: grabbing; }

View File

@@ -18,7 +18,7 @@
<div class="grid grid-2 mt-8"> <div class="grid grid-2 mt-8">
<div> <div>
<div class="flex items-center justify-between mb-4"> <div class="flex items-center justify-between mb-4">
<h2 class="section-title">Лабораторные</h2> <h2 class="section-title m-0">Лабораторные</h2>
<a th:href="@{/admin/labs}" class="text-sm">Все лабораторные →</a> <a th:href="@{/admin/labs}" class="text-sm">Все лабораторные →</a>
</div> </div>
<div class="card card-flush"> <div class="card card-flush">
@@ -35,7 +35,7 @@
</div> </div>
<div> <div>
<div class="flex items-center justify-between mb-4"> <div class="flex items-center justify-between mb-4">
<h2 class="section-title">Группы</h2> <h2 class="section-title m-0">Группы</h2>
<a th:href="@{/admin/groups}" class="text-sm">Все группы →</a> <a th:href="@{/admin/groups}" class="text-sm">Все группы →</a>
</div> </div>
<div class="card card-flush"> <div class="card card-flush">

View File

@@ -344,7 +344,7 @@
<div class="modal-body" id="assign-modal-body"></div> <div class="modal-body" id="assign-modal-body"></div>
</dialog> </dialog>
<script th:src="@{/js/admin-group.js(v='10')}" defer></script> <script th:src="@{/js/admin-group.js(v='11')}" defer></script>
</div> </div>
</body> </body>
</html> </html>

View File

@@ -219,7 +219,7 @@
</dialog> </dialog>
</th:block> </th:block>
</div> </div>
<script th:src="@{/js/admin-lab.js(v='10')}" defer></script> <script th:src="@{/js/admin-lab.js(v='11')}" defer></script>
</div> </div>
</body> </body>
</html> </html>

View File

@@ -15,17 +15,17 @@
</noscript> </noscript>
<link rel="icon" type="image/svg+xml" th:href="@{/favicon.svg(v='2')}"> <link rel="icon" type="image/svg+xml" th:href="@{/favicon.svg(v='2')}">
<!-- v=4: сброс кэша стилей после редизайна; при изменении css поднимать версию --> <!-- v=4: сброс кэша стилей после редизайна; при изменении css поднимать версию -->
<link rel="stylesheet" th:href="@{/css/app.css(v='10')}"> <link rel="stylesheet" th:href="@{/css/app.css(v='11')}">
<link id="hljs-light" rel="stylesheet" th:href="@{/css/hljs-github.css(v='10')}"> <link id="hljs-light" rel="stylesheet" th:href="@{/css/hljs-github.css(v='11')}">
<link id="hljs-dark" rel="stylesheet" th:href="@{/css/hljs-github-dark.css(v='10')}" disabled> <link id="hljs-dark" rel="stylesheet" th:href="@{/css/hljs-github-dark.css(v='11')}" disabled>
<script th:src="@{/js/highlight.min.js(v='10')}" defer></script> <script th:src="@{/js/highlight.min.js(v='11')}" defer></script>
<script th:src="@{/js/table-scroll.js(v='10')}" defer></script> <script th:src="@{/js/table-scroll.js(v='11')}" defer></script>
<script th:src="@{/js/tablekit.js(v='10')}" defer></script> <script th:src="@{/js/tablekit.js(v='11')}" defer></script>
<script th:src="@{/js/theme-init.js(v='10')}"></script> <script th:src="@{/js/theme-init.js(v='11')}"></script>
<script th:src="@{/js/app.js(v='10')}" defer></script> <script th:src="@{/js/app.js(v='11')}" defer></script>
<script th:src="@{/js/ui-state.js(v='10')}" defer></script> <script th:src="@{/js/ui-state.js(v='11')}" defer></script>
<script th:src="@{/js/md-content.js(v='10')}" defer></script> <script th:src="@{/js/md-content.js(v='11')}" defer></script>
<script th:src="@{/js/submit-guard.js(v='10')}" defer></script> <script th:src="@{/js/submit-guard.js(v='11')}" defer></script>
</head> </head>
<body> <body>
<div class="page"> <div class="page">

View File

@@ -124,7 +124,7 @@
</div> </div>
<script th:src="@{/js/mdeditor.js(v='10')}" defer></script> <script th:src="@{/js/mdeditor.js(v='11')}" defer></script>
</div> </div>
</body> </body>
</html> </html>

View File

@@ -50,7 +50,7 @@
<div class="sub-head sort-row"> <div class="sub-head sort-row">
<span th:if="${currentUser != null and currentUser.admin}" class="drag-handle" draggable="true" <span th:if="${currentUser != null and currentUser.admin}" class="drag-handle" draggable="true"
th:attr="data-drag-kind='section',data-drag-id=${section.id}" th:attr="data-drag-kind='section',data-drag-id=${section.id}"
title="Перетащите мышью: изменить порядок разделов"><svg class="cell-ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8"/><path d="M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/></svg></span> title="Перетащите мышью: изменить порядок разделов">⠿</span>
<button type="button" class="sub-toggle" aria-expanded="false" <button type="button" class="sub-toggle" aria-expanded="false"
title="Свернуть или развернуть раздел"> title="Свернуть или развернуть раздел">
<span class="sub-arrow" aria-hidden="true"></span> <span class="sub-arrow" aria-hidden="true"></span>
@@ -83,7 +83,7 @@
<li th:each="article : ${section.articles}" th:attr="data-article-id=${article.id}"> <li th:each="article : ${section.articles}" th:attr="data-article-id=${article.id}">
<span th:if="${currentUser != null and currentUser.admin}" class="drag-handle" draggable="true" <span th:if="${currentUser != null and currentUser.admin}" class="drag-handle" draggable="true"
th:attr="data-drag-kind='article',data-drag-id=${article.id}" th:attr="data-drag-kind='article',data-drag-id=${article.id}"
title="Перетащите мышью: изменить порядок или перенести в другой раздел"><svg class="cell-ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8"/><path d="M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/></svg></span> title="Перетащите мышью: изменить порядок или перенести в другой раздел">⠿</span>
<a class="sort-title" <a class="sort-title"
th:href="@{/learn/{c}/{s}/{a}(c=${chapter.slug}, s=${section.slug}, a=${article.slug})}" th:href="@{/learn/{c}/{s}/{a}(c=${chapter.slug}, s=${section.slug}, a=${article.slug})}"
th:text="${article.title}">Статья</a> th:text="${article.title}">Статья</a>
@@ -183,7 +183,7 @@
</div> </div>
</dialog> </dialog>
<script th:src="@{/js/content-sort.js(v='10')}" defer></script> <script th:src="@{/js/content-sort.js(v='11')}" defer></script>
</div> </div>
</body> </body>
</html> </html>

View File

@@ -24,7 +24,7 @@
<div class="sort-row"> <div class="sort-row">
<span th:if="${currentUser != null and currentUser.admin}" class="drag-handle" draggable="true" <span th:if="${currentUser != null and currentUser.admin}" class="drag-handle" draggable="true"
th:attr="data-drag-kind='chapter',data-drag-id=${chapter.id}" th:attr="data-drag-kind='chapter',data-drag-id=${chapter.id}"
title="Перетащите мышью: изменить порядок глав"><svg class="cell-ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8"/><path d="M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/></svg></span> title="Перетащите мышью: изменить порядок глав">⠿</span>
<h2 class="section-title sort-title m-0" th:text="${chapter.title}">Глава</h2> <h2 class="section-title sort-title m-0" th:text="${chapter.title}">Глава</h2>
<span th:if="${!chapter.published}" class="badge badge-warn">скрыто</span> <span th:if="${!chapter.published}" class="badge badge-warn">скрыто</span>
<div th:if="${currentUser != null and currentUser.admin}" class="sort-actions"> <div th:if="${currentUser != null and currentUser.admin}" class="sort-actions">
@@ -51,7 +51,7 @@
<div class="sub-head sort-row"> <div class="sub-head sort-row">
<span th:if="${currentUser != null and currentUser.admin}" class="drag-handle" draggable="true" <span th:if="${currentUser != null and currentUser.admin}" class="drag-handle" draggable="true"
th:attr="data-drag-kind='section',data-drag-id=${section.id}" th:attr="data-drag-kind='section',data-drag-id=${section.id}"
title="Перетащите мышью: изменить порядок или перенести раздел"><svg class="cell-ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8"/><path d="M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/></svg></span> title="Перетащите мышью: изменить порядок или перенести раздел">⠿</span>
<button type="button" class="sub-toggle" aria-expanded="false" <button type="button" class="sub-toggle" aria-expanded="false"
title="Свернуть или развернуть раздел"> title="Свернуть или развернуть раздел">
<span class="sub-arrow" aria-hidden="true"></span> <span class="sub-arrow" aria-hidden="true"></span>
@@ -82,7 +82,7 @@
<li th:each="article : ${section.articles}" th:attr="data-article-id=${article.id}"> <li th:each="article : ${section.articles}" th:attr="data-article-id=${article.id}">
<span th:if="${currentUser != null and currentUser.admin}" class="drag-handle" draggable="true" <span th:if="${currentUser != null and currentUser.admin}" class="drag-handle" draggable="true"
th:attr="data-drag-kind='article',data-drag-id=${article.id}" th:attr="data-drag-kind='article',data-drag-id=${article.id}"
title="Перетащите мышью: изменить порядок или перенести статью"><svg class="cell-ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8"/><path d="M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/></svg></span> title="Перетащите мышью: изменить порядок или перенести статью">⠿</span>
<a class="sort-title" <a class="sort-title"
th:href="@{/learn/{c}/{s}/{a}(c=${chapter.slug}, s=${section.slug}, a=${article.slug})}" th:href="@{/learn/{c}/{s}/{a}(c=${chapter.slug}, s=${section.slug}, a=${article.slug})}"
th:text="${article.title}">Статья</a> th:text="${article.title}">Статья</a>
@@ -232,8 +232,8 @@
</div> </div>
</dialog> </dialog>
<script th:src="@{/js/mdeditor.js(v='10')}" defer></script> <script th:src="@{/js/mdeditor.js(v='11')}" defer></script>
<script th:src="@{/js/content-sort.js(v='10')}" defer></script> <script th:src="@{/js/content-sort.js(v='11')}" defer></script>
</div> </div>
</body> </body>
</html> </html>

View File

@@ -50,7 +50,7 @@
<td> <td>
<span th:if="${currentUser != null and currentUser.admin}" class="drag-handle" draggable="true" <span th:if="${currentUser != null and currentUser.admin}" class="drag-handle" draggable="true"
th:attr="data-drag-kind='article',data-drag-id=${article.id}" th:attr="data-drag-kind='article',data-drag-id=${article.id}"
title="Перетащите, чтобы изменить порядок статей"><svg class="cell-ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8"/><path d="M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/></svg></span> title="Перетащите, чтобы изменить порядок статей">⠿</span>
<a th:href="@{/learn/{c}/{s}/{a}(c=${chapter.slug}, s=${section.slug}, a=${article.slug})}" <a th:href="@{/learn/{c}/{s}/{a}(c=${chapter.slug}, s=${section.slug}, a=${article.slug})}"
th:text="${article.title}">—</a> th:text="${article.title}">—</a>
<span th:if="${!article.published}" class="badge badge-warn ml-1">скрыто</span> <span th:if="${!article.published}" class="badge badge-warn ml-1">скрыто</span>
@@ -143,7 +143,7 @@
</div> </div>
</dialog> </dialog>
<script th:src="@{/js/content-sort.js(v='10')}" defer></script> <script th:src="@{/js/content-sort.js(v='11')}" defer></script>
</div> </div>
</body> </body>
</html> </html>

View File

@@ -107,7 +107,7 @@
<p class="text-sm text-muted">Ожидайте преподавателя с проверкой.</p> <p class="text-sm text-muted">Ожидайте преподавателя с проверкой.</p>
</div> </div>
</div> </div>
<script th:src="@{/js/defense-timer.js(v='10')}" defer></script> <script th:src="@{/js/defense-timer.js(v='11')}" defer></script>
</div> </div>
</body> </body>
</html> </html>