Feat: Модули курса (контент)

✅ CourseModuleController (store, update, destroy)
✅ Маршруты для модулей
✅ UI добавления/редактирования модулей
✅ Типы: section, lesson, video, file, link, test
✅ Тесты как тип модуля (выбор из существующих)
✅ Загрузка файлов
✅ Иерархия (родитель/потомки)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
mirivlad
2026-04-02 17:27:49 +08:00
co-authored by Qwen-Coder
parent 73453e32f1
commit 41224069c1
5 changed files with 436 additions and 58 deletions
+4
View File
@@ -8,6 +8,7 @@ use App\Http\Controllers\Admin\GroupController;
use App\Http\Controllers\Admin\UserController;
use App\Http\Controllers\Admin\CourseCategoryController;
use App\Http\Controllers\Admin\CourseController;
use App\Http\Controllers\Admin\CourseModuleController;
use App\Http\Controllers\Admin\TestController;
use App\Http\Controllers\Admin\QuestionController;
use App\Http\Controllers\Admin\CourseAssignmentController;
@@ -63,6 +64,9 @@ Route::middleware('auth')->group(function () {
Route::resource('course-categories', CourseCategoryController::class);
Route::resource('courses', CourseController::class);
Route::resource('courses.tests', TestController::class);
Route::post('/courses/{course}/modules', [CourseModuleController::class, 'store'])->name('courses.modules.store');
Route::put('/courses/{course}/modules/{module}', [CourseModuleController::class, 'update'])->name('courses.modules.update');
Route::delete('/courses/{course}/modules/{module}', [CourseModuleController::class, 'destroy'])->name('courses.modules.destroy');
Route::resource('tests.questions', QuestionController::class);
Route::resource('course-assignments', CourseAssignmentController::class)->except(['show', 'edit', 'update']);
Route::get('/course-assignments/{course}', CourseAssignmentController::class . '@show')->name('course-assignments.show');