Materials: images with captions and video support

- markdown: new directives `:::figure assets/x.png | Подпись` and
  `:::video assets/x.mp4 | Подпись` rendered as figure/figcaption and a
  video player (works with HTML escaping on); sanitizer allows video/source/
  track/figure with safe attributes only
- assets: video extensions (mp4/webm/ogg) allowed, separate limits — images
  up to 10 MB, video up to 100 MB; correct content types
- upload limits raised: web/academic multipart 120 MB per file / 200 MB per
  request, nginx client_max_body_size 200m (covers media inside ZIP imports)
- docs: new docs/06-authoring.md (markdown, images, video, assets, limits,
  import semantics); import message now says "медиафайлов"
This commit is contained in:
2026-09-17 15:44:16 +03:00
parent 1238265c8e
commit 396221047c
8 changed files with 200 additions and 17 deletions

View File

@@ -42,7 +42,7 @@ class ContentAdminController(
redirect.addFlashAttribute(
"notice",
"Импортировано: глав ${result.chapters}, разделов ${result.sections}, " +
"статей ${result.articles}, картинок ${result.assets}$removedNote",
"статей ${result.articles}, медиафайлов ${result.assets}$removedNote",
)
"redirect:/admin/content"
} catch (ex: ApiException) {

View File

@@ -16,8 +16,8 @@ spring:
name: web
servlet:
multipart:
max-file-size: 30MB
max-request-size: 120MB
max-file-size: 120MB
max-request-size: 200MB
thymeleaf:
cache: false