- teacher/admin course pages, content, gradebook, profile, downloads - courseNo -> UUID только на границе REST API - обновлены e2e, шаблоны, тесты и docs - LDD-UI-002; baseline 59 claims / 385 тестов
87 lines
4.5 KiB
HTML
87 lines
4.5 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="ru" xmlns:th="http://www.thymeleaf.org" th:replace="~{fragments/base :: layout(~{::title}, ~{::#content})}">
|
||
<head><title th:text="${article.title} + ' — LMS'">Статья</title></head>
|
||
<body>
|
||
<div id="content">
|
||
<nav class="text-sm mb-4 breadcrumb">
|
||
<a th:href="@{/teacher/courses/{no}(no=${course.courseNo})}" class="nav-link" th:text="${course.title}">Курс</a>
|
||
<span class="nav-sep">/</span>
|
||
<a th:href="@{/teacher/courses/{no}/content(no=${course.courseNo})}"
|
||
class="nav-link">Материалы</a>
|
||
<span class="nav-sep">/</span>
|
||
<span th:text="${article.chapterTitle}">Глава</span>
|
||
<span class="nav-sep">/</span>
|
||
<span th:text="${article.sectionTitle}">Раздел</span>
|
||
<span class="nav-sep">/</span>
|
||
<span th:text="${article.title}">Статья</span>
|
||
</nav>
|
||
|
||
<div class="page-head mb-2">
|
||
<div>
|
||
<h1 class="page-title m-0">
|
||
<span th:text="${article.title}">Статья</span>
|
||
<span class="badge"
|
||
th:classappend="${article.published ? 'badge-ok' : 'badge-warn'}"
|
||
th:text="${article.published ? 'опубликовано' : 'скрыто от студентов'}">—</span>
|
||
</h1>
|
||
<div class="meta mt-2">
|
||
<span th:text="|${course.title} / ${article.chapterTitle} / ${article.sectionTitle}|">Курс</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="flex flex-wrap gap-2 mb-4">
|
||
<a class="btn btn-sm btn-secondary" th:href="${back}">← К материалам курса</a>
|
||
<a class="btn btn-sm btn-secondary"
|
||
th:if="${course.courseNo != null and course.courseNo > 0}"
|
||
th:href="@{/learn/course/{no}/{chapter}/{section}/{article}(no=${course.courseNo}, chapter=${article.chapterSlug}, section=${article.sectionSlug}, article=${article.slug})}">
|
||
Студенческий вид
|
||
</a>
|
||
<form class="inline-form"
|
||
th:action="@{/teacher/courses/{no}/content/articles/{id}/published(no=${course.courseNo}, id=${article.id})}"
|
||
method="post">
|
||
<input type="hidden" name="_csrf" th:value="${csrfToken}">
|
||
<input type="hidden" name="published" th:value="${!article.published}">
|
||
<input type="hidden" name="back" th:value="${back}">
|
||
<button class="btn btn-sm btn-secondary" type="submit"
|
||
th:text="${article.published ? 'Скрыть от студентов' : 'Опубликовать'}">Опубликовать</button>
|
||
</form>
|
||
<form class="inline-form"
|
||
th:action="@{/teacher/courses/{no}/content/articles/{id}/delete(no=${course.courseNo}, id=${article.id})}"
|
||
method="post" data-confirm="Удалить статью?">
|
||
<input type="hidden" name="_csrf" th:value="${csrfToken}">
|
||
<input type="hidden" name="back" th:value="${back}">
|
||
<button class="btn btn-sm btn-danger" type="submit">Удалить</button>
|
||
</form>
|
||
</div>
|
||
|
||
<div class="row g-4">
|
||
<div class="col-12 col-lg-7">
|
||
<form class="card card-body form-stack"
|
||
th:action="@{/teacher/courses/{no}/content/articles/{id}/save(no=${course.courseNo}, id=${article.id})}"
|
||
method="post">
|
||
<input type="hidden" name="_csrf" th:value="${csrfToken}">
|
||
<input type="hidden" name="back" th:value="${back}">
|
||
<div>
|
||
<label class="label" for="articleTitle">Заголовок</label>
|
||
<input class="input" id="articleTitle" name="title" th:value="${article.title}" required>
|
||
</div>
|
||
<div>
|
||
<label class="label" for="articleBodyMd">Текст (markdown)</label>
|
||
<textarea class="input md-editor-body" id="articleBodyMd" name="bodyMd"
|
||
rows="18" th:text="${article.bodyMd}"></textarea>
|
||
</div>
|
||
<button class="btn btn-primary" type="submit">Сохранить</button>
|
||
</form>
|
||
</div>
|
||
<div class="col-12 col-lg-5">
|
||
<div class="card card-body">
|
||
<h2 class="section-title m-0">Предпросмотр</h2>
|
||
<div class="md-body mt-2" th:utext="${bodyHtml}">Предпросмотр статьи</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</body>
|
||
</html>
|