Làm mới trình chỉnh sửa khoá học, chương và bài học

Các trang giảng viên dùng để sửa khoá học, chương và từng loại bài học giờ theo cùng kiểu với trang quản trị tổ chức. Mỗi trang có một nút Lưu ở thanh trên, các mục phẳng, và nút xoá nằm riêng ở cuối trang. Tính năng giữ nguyên.

SP-851 · 24/10/2026

Tình trạng ngày 24/10/2026

Giai đoạn
PR chưa mở, chờ review. Code đã push lên nhánh, chưa merge, chưa có trên beta hay production.
Nhánh
SP-851/course-editor-rework, một commit ac167faf.
Base
origin/main tại 1d13d171. Phần "Trước" trong ảnh và video chụp từ đúng commit này.
PR
Chưa mở. Link PR sẽ được thêm khi mở.
Ticket
SP-851
Phạm vi
Chỉ đổi frontend, ở các trang giảng viên và quản trị dùng để sửa khoá học. Học viên không thấy gì khác. Backend, API và cơ sở dữ liệu không đổi.
Ảnh và video
Toàn bộ ảnh chụp và video lấy từ môi trường chạy trên máy với dữ liệu mẫu. Tên người và số liệu không có thật.

Vì sao làm lại

Trang sửa khoá học và bài học cũ mỗi chỗ lưu một kiểu. Có trang để nút Lưu trong một khung giữa trang, có trang có hai nút lưu cho hai phần khác nhau. Ở trang bài học, nút Xóa màu đỏ nằm ngay cạnh nút Cập nhật, bấm nhầm là mất bài.

Trang quản trị tổ chức (SP-792) đã chuyển sang kiểu phẳng với một nút Lưu ở trên cùng. Đợt này đưa toàn bộ phần soạn khoá học về cùng kiểu đó. Giảng viên quen một trang là dùng được mọi trang khác.

Thay đổi chính

Lưu

Một nút Lưu ở trên

Thanh tiêu đề cố định có nút Lưu, chấm "Có thay đổi chưa lưu" và nút Bỏ thay đổi.

Bố cục

Mục phẳng

Không còn khung thẻ. Mỗi nhóm trường là một mục có biểu tượng và tiêu đề.

Xoá

Vùng nguy hiểm

Nút xoá chương và bài học xuống cuối trang, xa nút Lưu.

Tài liệu

Danh sách tham khảo

Tài liệu tham khảo là một danh sách, liên kết mới được đánh dấu Chưa lưu.

Quiz

Danh sách và trình soạn

Trang câu hỏi chia làm danh sách bên trái, trình soạn bên phải.

Video giới thiệu

Dài 3 phút 57 giây. Phần đầu là giao diện cũ, phần sau là giao diện mới. Giọng đọc tiếng Anh, phụ đề tiếng Việt bật sẵn. Có thể đổi sang phụ đề tiếng Anh trong nút phụ đề của trình phát. Chấm xanh là con trỏ chuột.

Trong video

  1. 0:00 Thẻ mở đầu.
  2. 0:13 Giao diện cũ, có nhãn "TRƯỚC" ở góc. Thông tin khoá học với nút Lưu nằm trong khung Tổng quan.
  3. 0:24 Bài đọc. Nút Xóa đỏ cạnh Cập nhật, phần Tài liệu tham khảo có nút Cập nhật riêng.
  4. 0:38 Cài đặt khoá học có hai nút Lưu, một cho Lịch làm bài tập, một cho Thu thập phản hồi.
  5. 0:49 Trang câu hỏi quiz chèn thêm thanh bên thứ hai cạnh cây nội dung.
  6. 0:55 Thẻ "SAU". Từ đây là giao diện mới.
  7. 1:01 Thông tin khoá học: breadcrumb, dòng trạng thái, một nút Lưu ở thanh trên. Cuộn qua các mục phẳng.
  8. 1:20 Sửa phần Tóm tắt. Thanh trên hiện chấm "Có thay đổi chưa lưu" và nút Bỏ thay đổi. Bấm Bỏ thay đổi, trang về như cũ.
  9. 1:32 Sửa lại rồi bấm Lưu. Thông báo "Khoá học đã được cập nhật thành công" hiện ở góc dưới bên trái khoảng 3 giây.
  10. 1:43 Cài đặt khoá học. Trạng thái, Đăng ký và Bán công khai vẫn lưu ngay khi đổi (chỉ di chuột qua, không đổi). Thêm một điều kiện Thu thập phản hồi, thanh trên báo chưa lưu, rồi Bỏ thay đổi.
  11. 2:03 Trang chương: Thông tin cơ bản, Tài liệu tham khảo, Vùng nguy hiểm.
  12. 2:11 Bài đọc. Thêm tài liệu "Bài tập Python trên W3Schools", dòng mới có chấm Chưa lưu, rồi Bỏ thay đổi.
  13. 2:32 Vùng nguy hiểm, nút "Xóa bài học", hộp thoại xác nhận, bấm Hủy.
  14. 2:42 Quiz và trang câu hỏi: danh sách 12 câu bên trái, trình soạn bên phải. Sửa câu 5, thanh trên báo chưa lưu. Di chuột qua Thêm câu hỏi và Nhập từ tệp, rồi Bỏ thay đổi.
  15. 3:12 Bài luận: mục Chấm điểm với 4 tiêu chí, 100 / 100 điểm.
  16. 3:21 Bài học cuộc thi: cuộc thi liên kết và nút Mở trang cuộc thi.
  17. 3:29 Bộ bài tập: danh sách 3 bài có nút đổi thứ tự, hộp chọn Thêm bài tập, đóng lại mà không thêm gì.
  18. 3:44 Cây nội dung khoá học: chương là nhóm phẳng, nút Thêm bài học luôn hiện. Kết thúc ở Thông tin khoá học.

Video lưu đúng một thay đổi: câu "Có bài tập thực hành." thêm vào Tóm tắt lúc 1:32. Câu này được xoá qua API ngay sau khi quay, nên ảnh chụp không có nó. Mọi chỉnh sửa khác trong video đều bỏ bằng nút Bỏ thay đổi, hộp thoại xoá bị huỷ, hộp chọn bài tập không thêm gì. Ở phần giao diện cũ, màn hình tải của ứng dụng hiện khoảng 1 giây ở 0:20 và 0:46 vì hai lần tải lại trang. Giọng đọc gọi tên nút bằng tiếng Anh (Save, Discard, danger zone), phụ đề dùng đúng tên trên màn hình (Lưu, Bỏ thay đổi, Vùng nguy hiểm).

Thay đổi gì và vì sao

Một nút Lưu ở thanh trên, có trạng thái chưa lưu

Mọi trang sửa (khoá học, chương, từng loại bài học, trang câu hỏi quiz) có một thanh tiêu đề cố định khi cuộn. Khi chưa sửa gì, nút Lưu mờ đi. Khi có thay đổi, thanh hiện chấm cam "Có thay đổi chưa lưu" và nút Bỏ thay đổi. Bỏ thay đổi đưa trang về giá trị đã lưu.

Trước đây trang Thông tin khoá học để nút Lưu trong khung Tổng quan, giữa trang. Các trang bài học có nút Cập nhật ở trên và thêm một nút Cập nhật khác cho tài liệu tham khảo. Giờ mỗi trang chỉ còn một chỗ lưu.

Thông tin khoá học sau khi sửa Tóm tắt: thanh trên có chấm Có thay đổi chưa lưu, nút Bỏ thay đổi và nút Lưu đang bật.
Thông tin khoá học, vừa thêm "Có bài tập thực hành." vào Tóm tắt. Thanh trên hiện "Có thay đổi chưa lưu", Bỏ thay đổi và Lưu.

Các mục phẳng thay cho khung thẻ

Khung thẻ, đường kẻ và tiêu đề tím bên trong biểu mẫu được thay bằng các mục phẳng. Mỗi mục có biểu tượng, tiêu đề và đôi khi một dòng mô tả. Bài học nào cũng theo cùng thứ tự: Thông tin cơ bản, Nội dung, các mục riêng của loại bài (Lịch làm bài, Chấm điểm...), Cài đặt, Tài liệu tham khảo, Vùng nguy hiểm. Các ô đánh dấu (checkbox) trở thành công tắc có mô tả. Đầu trang có dòng thông tin ngắn: trạng thái, loại bài, số câu hỏi hoặc số bài tập.

Trước và sau của từng trang nằm ở phần Trước và sau từng màn hình.

Vùng nguy hiểm cho thao tác xoá

Nút Xóa đỏ từng nằm ngay cạnh nút Cập nhật ở đầu trang chương và bài học. Giờ nút xoá nằm trong mục "Vùng nguy hiểm" ở cuối trang, xa nút Lưu. Hộp thoại xác nhận giữ nguyên như cũ.

Hộp thoại Xác nhận xóa bài học với hai nút Hủy và Xóa.
Bấm "Xóa bài học" trong Vùng nguy hiểm mở hộp thoại "Xác nhận xóa bài học". Trong lần chụp này đã bấm Hủy, không xoá gì.

Tài liệu tham khảo là một danh sách

Tài liệu tham khảo của chương và bài học giờ là một danh sách, có số lượng ở đầu, nút xoá ở mỗi dòng và ô thêm liên kết hoặc tệp ở cuối. Liên kết mới có chấm cam "Chưa lưu" cho đến khi bấm Lưu ở thanh trên. Nút "Lưu tài nguyên" và "Cập nhật" riêng của phần này không còn. Khung vàng báo chưa lưu cũng bỏ, vì thanh trên đã báo.

Bài đọc với danh sách 3 tài liệu, dòng thứ ba có chấm Chưa lưu, thanh trên báo có thay đổi chưa lưu.
Bài đọc "Biến và kiểu dữ liệu" sau khi thêm "Bài tập Python trên W3Schools". Danh sách ghi "3 tài liệu", dòng mới có chấm "Chưa lưu". Thay đổi này đã bỏ sau khi chụp.

Câu hỏi quiz: danh sách bên trái, trình soạn bên phải

Trang câu hỏi cũ chèn một thanh bên thứ hai cạnh cây nội dung khoá học, có nút Quay lại riêng. Giờ trang có breadcrumb về bài quiz, một nút Lưu ở thanh trên, khung danh sách câu hỏi (Thêm câu hỏi, Nhập từ tệp, loại và nút xoá ở mỗi dòng, tổng số câu và tổng điểm) và trình soạn chia mục Loại câu hỏi, Đáp án, Giải thích.

Nội dung câu hỏi chờ nút Lưu ở thanh trên như mọi trang khác. Thêm, xoá và nhập câu hỏi vẫn chạy ngay khi bấm, như trước.

Trang câu hỏi quiz: danh sách 12 câu bên trái, câu 5 đang sửa bên phải, thanh trên báo có thay đổi chưa lưu.
Câu 5 "Làm thế nào để định nghĩa một hàm?" được thêm " (Python 3)". Thanh trên báo chưa lưu. Thay đổi này đã bỏ sau khi chụp.

Quy tắc lưu ở Cài đặt khoá học

Trang này có hai kiểu lưu, và đợt này giữ nguyên kiểu nào ra kiểu đó. Trạng thái, đăng ký và bán công khai vẫn lưu ngay khi đổi, như trước. Lịch làm bài tập và Thu thập phản hồi thành bản nháp, lưu chung bằng một nút Lưu ở thanh trên.

PhầnCách lưu
Trạng thái khoá họcLưu ngay khi đổi, như trước.
Trạng thái đăng kýLưu ngay khi đổi, như trước.
Bán công khai (B2C)Lưu ngay khi bật hoặc tắt, như trước.
Lịch làm bài tậpBản nháp. Lưu bằng nút Lưu ở thanh trên. Trước đây có nút Lưu và Xoá riêng.
Thu thập phản hồiBản nháp. Lưu cùng nút Lưu ở thanh trên. Trước đây có nút Lưu riêng.

Nút Lưu ở thanh trên lưu cả hai bản nháp. Mỗi bản nháp chỉ được xoá khỏi trang khi phần đó lưu thành công, nên nếu một phần lỗi thì phần đó vẫn còn để lưu lại. Nếu vừa đổi trạng thái và lần lưu trạng thái còn đang chạy, nút Lưu đợi nó xong rồi mới lưu tiếp.

Cài đặt khoá học với hai điều kiện Khi hoàn thành khoá học trong Thu thập phản hồi, thanh trên báo có thay đổi chưa lưu.
Thu thập phản hồi sau khi thêm điều kiện thứ hai "Khi hoàn thành khoá học". Thanh trên hiện "Có thay đổi chưa lưu", Bỏ thay đổi và Lưu. Không lưu, đã bỏ sau khi chụp.

Trước và sau từng màn hình

Ảnh bên trái là bản đang chạy (origin/main), ảnh bên phải là bản mới. Cả hai dùng cùng dữ liệu mẫu: khoá "Lập trình Python cơ bản" ở trạng thái Nháp, 2 chương, 9 bài học. Bấm vào ảnh để xem cỡ lớn.

Thông tin khoá học

Trước Trang Thông tin khoá học cũ: thanh tiêu đề Chỉnh Sửa Khoá Học, khung Tổng quan Khoá học có nút Lưu riêng.
Thanh tiêu đề "Chỉnh Sửa Khoá Học • Lập trình Python cơ bản". Tiêu đề tím "Tổng quan Khoá học" có nút Lưu nằm trong khung. Giá, thời lượng và trình độ dồn trên một hàng. Bấm để xem cỡ lớn.
Sau Trang Thông tin khoá học mới: breadcrumb Khoá học, nút Lưu trên thanh trên, các mục phẳng có biểu tượng.
Breadcrumb "Khoá học", tiêu đề và một nút Lưu ở thanh trên, dòng "Trạng thái: Nháp". Các mục Tổng quan, Mô tả, Trình độ và thời lượng, Giá, Thẻ chủ đề, Giảng viên của khoá học. Bấm để xem cỡ lớn.

Cài đặt khoá học

Trước Cài đặt khoá học cũ: ba cột trạng thái, Lịch làm bài tập và Thu thập Phản hồi mỗi phần có nút Lưu riêng.
Trạng thái, đăng ký và bán công khai xếp ba cột. "Lịch làm bài tập" có nút Lưu và Xoá riêng, "Thu thập Phản hồi" có nút Lưu thứ hai.
Sau Cài đặt khoá học mới: các mục xếp dọc, một nút Lưu ở thanh trên.
Các mục xếp dọc: Trạng thái Khoá học (Nháp), Trạng thái Đăng ký (Đóng, khoá lại khi còn nháp), Bán công khai đang bật, Lịch làm bài tập 27/10/2026 00:00 đến 29/10/2026 00:00, Thu thập Phản hồi với 1 điều kiện, Câu hỏi tùy chỉnh, xuất dữ liệu, Nhân bản. Một nút Lưu ở thanh trên. Bấm để xem cỡ lớn.

Chương

Trước Trang chương cũ: nút Xóa Chương đỏ cạnh nút Lưu, phần tài liệu tham khảo có nút Lưu tài nguyên riêng.
"Chương 1: Nền tảng Python". Nút đỏ "Xóa Chương" ngay cạnh Lưu. Tài liệu tham khảo có nút "Lưu tài nguyên" riêng.
Sau Trang chương mới: trạng thái Đã xuất bản, 9 bài học, các mục Thông tin cơ bản, Tài liệu tham khảo, Vùng nguy hiểm.
Dòng thông tin "Đã xuất bản", "Bài học 9". Ba mục Thông tin cơ bản, Tài liệu tham khảo (đang trống) và Vùng nguy hiểm với nút "Xóa chương".

Bài đọc

Trước Bài đọc cũ: nút Xóa đỏ cạnh Cập nhật, tài liệu tham khảo có nút Cập nhật riêng và 2 tài liệu.
"Biến và kiểu dữ liệu". Nút Xóa đỏ cạnh Cập nhật ở đầu trang. Ô đánh dấu cho phép sao chép. Khung tài liệu tham khảo có nút Cập nhật riêng và 2 tài liệu.
Sau Bài đọc mới: các mục Thông tin cơ bản, Nội dung, Cài đặt, Tài liệu tham khảo với 2 tài liệu, Vùng nguy hiểm.
Dòng thông tin "Đã xuất bản", "Bài đọc". Các mục Thông tin cơ bản, Nội dung, Cài đặt (công tắc), Tài liệu tham khảo ("2 tài liệu") và Vùng nguy hiểm.

Quiz

Trước Quiz cũ: nút Xóa và Cập nhật ở đầu, các ô đánh dấu, dòng Đã bao gồm 12 câu hỏi với nút Xem.
"Bài kiểm tra kiến thức cơ bản". Xóa và Cập nhật ở đầu trang, các ô đánh dấu, dòng "Đã bao gồm 12 câu hỏi" với nút Xem.
Sau Quiz mới: dòng thông tin 12 câu hỏi, các mục Câu hỏi, Lịch làm bài, Chấm điểm và số lần làm bài, Cài đặt.
Dòng thông tin "Đã xuất bản", "Quiz", "Câu hỏi 12". Mục Câu hỏi có nút "Chỉnh sửa câu hỏi". Chấm điểm và số lần làm bài: đạt 60%, tối đa 3 lần. Cài đặt là 3 công tắc. Bấm để xem cỡ lớn.

Câu hỏi quiz

Trước Trang câu hỏi cũ: thanh bên thứ hai với 12 câu hỏi cạnh cây nội dung, nhãn Chưa lưu ngay khi mở.
Thanh bên thứ hai (nút quay lại, Thêm câu hỏi, 12 câu, tổng) nằm cạnh cây nội dung. Nhãn "Chưa lưu" đã hiện ngay khi mở trang, dù chưa sửa gì. Đây là lỗi của bản cũ, đã sửa (xem phần lỗi bên dưới).
Sau Trang câu hỏi mới: breadcrumb về quiz, khung 12 câu hỏi bên trái, trình soạn Câu hỏi 1 bên phải, nút Lưu mờ.
Breadcrumb về bài quiz, tiêu đề "Câu hỏi", nút Lưu mờ vì chưa sửa gì. Khung "12 câu hỏi" (tổng 12 câu, 12 điểm) và trình soạn "Câu hỏi 1".

Bài luận

Trước Bài luận cũ: mọi trường trong một cột, tiêu đề tím Rubric chấm điểm.
"Bài luận: Vì sao Python phổ biến?". Mọi trường trong một cột, tiêu đề tím "Rubric chấm điểm", Xóa và Cập nhật ở đầu trang.
Sau Bài luận mới: mục Chấm điểm với 4 tiêu chí 25 điểm, tổng 100 trên 100.
Các mục Thông tin cơ bản, Nội dung (tối thiểu 300 từ), Lịch làm bài, Chấm điểm (4 tiêu chí × 25 = "Điểm: 100 / 100"), Cài đặt, Tài liệu tham khảo, Vùng nguy hiểm. Bấm để xem cỡ lớn.

Bài học cuộc thi

Trước Bài học cuộc thi cũ liên kết tới Cuộc thi dự báo mùa đông, Xóa và Cập nhật ở đầu trang.
"Cuộc thi mùa đông" liên kết tới "Cuộc thi dự báo mùa đông". Xóa và Cập nhật ở đầu trang.
Sau Bài học cuộc thi mới: dòng thông tin cuộc thi liên kết, mục Cuộc thi liên kết với nút Mở trang cuộc thi.
Dòng thông tin ghi cuộc thi liên kết. Mục Cuộc thi liên kết có nút "Mở trang cuộc thi" và "Xếp hạng chung cuộc" (đang mờ). Đầu trang chỉ còn nút Lưu, không còn nút Xóa.

Bộ bài tập

Trước Bộ bài tập cũ: 3 bài tập và ô chọn bài tập nằm ngay dưới danh sách.
"Bài tập luyện: Khởi động" có 3 bài. Ô chọn thêm bài tập nằm ngay dưới danh sách, chiếm nửa trang.
Sau Bộ bài tập mới: danh sách 3 trên 50 bài tập với nút đổi thứ tự và nút Thêm bài tập.
Danh sách "3 / 50 bài tập": Tổng hai số (Dễ), Phân loại hoa Iris (Trung bình), Đếm số nguyên tố (Khó), mỗi dòng có nút lên, xuống, xoá. Nút "Thêm bài tập" mở hộp chọn.
Hộp chọn Thêm bài tập: ô tìm kiếm, lọc độ khó, 3 bài ghi Đã thêm, các bài khác có nút Thêm.
Hộp chọn "Thêm bài tập": tìm kiếm, lọc độ khó, 3 bài đã có trong bộ ghi "Đã thêm", các bài khác có nút Thêm. Bài được thêm vào danh sách và chờ nút Lưu.

Cây nội dung khoá học

Phạm vi

Lỗi đã sửa trong đợt này

Có lỗi đã có sẵn trên bản đang chạy, có lỗi tìm ra khi review bản làm lại. Tất cả đều sửa trong commit này.

Thay đổi về cách hoạt động cần biết

Giới hạn đã biết, chưa sửa

Cách kiểm tra trên beta sau khi merge

Khoảng 15 phút, với tài khoản giảng viên có một khoá học nháp để thử. Đừng thử trên khoá đang có học viên.

  1. Thông tin khoá học

    Sửa Tóm tắt. Thanh trên phải hiện "Có thay đổi chưa lưu". Bấm Bỏ thay đổi, giá trị cũ quay lại và nút Lưu mờ đi. Sửa lần nữa, bấm Lưu, tải lại trang và xem giá trị mới còn đó.

  2. Cài đặt khoá học

    Đổi trạng thái đăng ký và thấy nó lưu ngay. Đổi Lịch làm bài tập và thêm một điều kiện Thu thập phản hồi, bấm một nút Lưu ở thanh trên, tải lại trang và xem cả hai đã lưu.

  3. Chương và bài đọc

    Thêm một tài liệu tham khảo, dòng mới phải có chấm "Chưa lưu". Bấm Lưu, chấm mất. Bấm "Xóa bài học" trong Vùng nguy hiểm, thấy hộp thoại xác nhận, rồi bấm Hủy.

  4. Quiz

    Mở trang câu hỏi. Ngay khi mở, nút Lưu phải mờ. Sửa một câu, bấm Lưu, tải lại trang. Thêm rồi xoá một câu hỏi để thấy hai thao tác này chạy ngay.

  5. Các loại bài khác

    Tạo một bài luận và một bài video mới. Sau khi tạo, biểu mẫu phải giữ đúng nội dung vừa nhập và video vừa chọn. Mở một bài H5P, bấm Lưu, trang không còn báo chưa lưu.

  6. Chuyển nhanh giữa các bài

    Bấm liên tục qua vài bài học trong cây nội dung rồi bấm Thêm bài học. Không trang nào được kẹt ở màn hình tải.

  7. Phía học viên

    Mở khoá học bằng tài khoản học viên. Trang học phải giống hệt trước.

Các bước để đưa lên

  1. Mở PR từ nhánh SP-851/course-editor-rework, review và duyệt.
  2. Merge vào main. Bản này tự lên beta. Không cần chuyển đổi dữ liệu hay đổi cấu hình.
  3. Chạy lượt kiểm tra trên beta ở phần trên.
  4. Chuyển SP-851 sang Testing sau khi kiểm tra beta, và sang Done khi bản này có trong một bản phát hành production.