Khi BTC muốn soạn nội quy giải đấu hoặc mô tả chi tiết với định dạng phong phú — tiêu đề, danh sách, chữ đậm, liên kết — thay vì văn bản thuần.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Toolbar định dạng | button | Hàng nút trên editor: Bold, Italic, Underline, H2, H3, Danh sách có dấu đầu dòng, Danh sách đánh số, Blockquote, Chèn liên kết. Bôi chọn văn bản rồi bấm nút để áp dụng định dạng. |
| 2 | Vùng soạn thảo WYSIWYG | textarea | Editor Tiptap — gõ và thấy kết quả ngay. Hỗ trợ phím tắt chuẩn: Ctrl+B (Bold), Ctrl+I (Italic), Ctrl+Z (Undo). |
| 3 | Chèn liên kết | button | Bôi chọn văn bản, bấm nút Link, nhập URL (chỉ http/https/mailto). Liên kết tự mở tab mới với rel='noopener noreferrer'. |
| 4 | Lưu nội quy | button | Gửi nội dung HTML đã sanitize lên server. Backend dùng HtmlSanitizer (Ganss.Xss) để loại bỏ tag/attribute nguy hiểm trước khi lưu. |
Ctrl+B (Bold), Ctrl+I (Italic), Ctrl+U (Underline), Ctrl+Z (Undo), Ctrl+Y (Redo), Tab (indent danh sách lồng nhau).
Rich-text description cho phép BTC soạn nội quy và mô tả giải đấu với định dạng phong phú — tiêu đề, danh sách, liên kết, blockquote — thay vì văn bản thuần. Editor dùng Tiptap (WYSIWYG) với toolbar Lucide icons khớp design system SportUp. Output HTML được backend sanitize trước khi lưu.
Dùng khi soạn nội quy giải (luật chơi, điều kiện tham dự, lịch thi đấu chi tiết, thể lệ tính điểm) và muốn nội dung có cấu trúc rõ ràng, dễ đọc hơn văn bản thuần.
Vào Trang quản lý giải → tab Cài đặt → phần Nội quy / Mô tả. Editor WYSIWYG xuất hiện với toolbar ở trên và vùng soạn thảo bên dưới.
Nhập nội dung trực tiếp trong vùng soạn thảo. Dùng toolbar để định dạng: bôi chọn văn bản → bấm Bold (hoặc Ctrl+B), Italic, H2/H3 cho tiêu đề mục, Danh sách cho các điều khoản.
Dùng H2 cho các mục lớn (Luật chơi, Lịch trình, Giải thưởng) và danh sách có dấu đầu dòng cho các điều kiện. Tránh paste nhiều màu sắc hay font tùy chỉnh — editor sẽ lọc bỏ.
Để chèn liên kết: bôi chọn văn bản → bấm nút Link trên toolbar → nhập URL (phải bắt đầu bằng http://, https:// hoặc mailto:). Liên kết tự mở tab mới với thuộc tính an toàn.
Bấm Lưu nội quy. Backend nhận HTML, chạy sanitizer (HtmlSanitizer/Ganss.Xss) để loại bỏ mọi tag/attribute nguy hiểm, rồi lưu HTML sạch vào cột Rules của Tournament.
Người chơi mở trang chi tiết giải và đọc nội quy đã định dạng — được render bằng Tailwind prose class với kiểu chữ và khoảng cách phù hợp, hỗ trợ cả dark mode.