escolalms / courses
Escola 无头 LMS 课程
0.4.40
2024-07-10 07:30 UTC
Requires
- php: >=7.4
- davidbadura/faker-markdown-generator: ^1.1
- devianl2/laravel-scorm: >=2.0
- escolalms/auth: ^0
- escolalms/categories: ^0
- escolalms/core: ^1
- escolalms/files: ^0
- escolalms/model-fields: ^0
- escolalms/scorm: ^0
- escolalms/settings: ^0
- escolalms/tags: ^0
- laravel/framework: >=8.0
- spatie/laravel-responsecache: ^7.4
Requires (Dev)
- nunomaduro/larastan: ^2.0
- orchestra/testbench: >=5.0
- phpunit/phpunit: ^9.0
- dev-main
- 0.4.40
- 0.4.39
- 0.4.38
- 0.4.37
- 0.4.36
- 0.4.35
- 0.4.34
- 0.4.33
- 0.4.32
- 0.4.31
- 0.4.30
- 0.4.29
- 0.4.28
- 0.4.27
- 0.4.26
- 0.4.25
- 0.4.24
- 0.4.23
- 0.4.22
- 0.4.21
- 0.4.20
- 0.4.19
- 0.4.18
- 0.4.17
- 0.4.16
- 0.4.15
- 0.4.14
- 0.4.13
- 0.4.12
- 0.4.11
- 0.4.10
- 0.4.9
- 0.4.8
- 0.4.7
- 0.4.6
- 0.4.5
- 0.4.4
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.73
- 0.3.72
- 0.3.71
- 0.3.70
- 0.3.69
- 0.3.68
- 0.3.67
- 0.3.66
- 0.3.65
- 0.3.64
- 0.3.63
- 0.3.62
- 0.3.61
- 0.3.60
- 0.3.59
- 0.3.58
- 0.3.57
- 0.3.56
- 0.3.55
- 0.3.54
- 0.3.53
- 0.3.52
- 0.3.51
- 0.3.50
- 0.3.49
- 0.3.48
- 0.3.47
- 0.3.46
- 0.3.45
- 0.3.44
- 0.3.43
- 0.3.42
- 0.3.41
- 0.3.40
- 0.3.39
- 0.3.38
- 0.3.37
- 0.3.36
- 0.3.35
- 0.3.34
- 0.3.33
- 0.3.32
- 0.3.31
- 0.3.30
- 0.3.29
- 0.3.28
- 0.3.27
- 0.3.26
- 0.3.25
- 0.3.24
- 0.3.23
- 0.3.22
- 0.3.21
- 0.3.20
- 0.3.19
- 0.3.18
- 0.3.17
- 0.3.16
- 0.3.15
- 0.3.14
- 0.3.13
- 0.3.12
- 0.3.11
- 0.3.10
- 0.3.9
- 0.3.8
- 0.3.7
- 0.3.6
- 0.3.5
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.x-dev
- 0.2.26
- 0.2.24
- 0.2.23
- 0.2.22
- 0.2.21
- 0.2.20
- 0.2.19
- 0.2.18
- 0.2.17
- 0.2.16
- 0.2.15
- 0.2.14
- 0.2.13
- 0.2.12
- 0.2.11
- 0.2.10
- 0.2.9
- 0.2.8
- 0.2.7
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.54
- 0.1.53
- 0.1.52
- 0.1.51
- 0.1.50
- 0.1.49
- 0.1.48
- 0.1.47
- 0.1.46
- 0.1.45
- 0.1.44
- 0.1.43
- 0.1.42
- 0.1.41
- 0.1.40
- 0.1.39
- 0.1.38
- 0.1.37
- 0.1.36
- 0.1.35
- 0.1.34
- 0.1.33
- 0.1.32
- 0.1.31
- 0.1.30
- 0.1.29
- 0.1.28
- 0.1.27
- 0.1.26
- 0.1.25
- 0.1.24
- 0.1.23
- 0.1.22
- 0.1.21
- 0.1.20
- 0.1.19
- 0.1.18
- 0.1.17
- 0.1.16
- 0.1.15
- 0.1.14
- 0.1.13
- 0.1.12
- 0.1.11
- 0.0.10
- 0.0.9
- 0.0.8
- 0.0.7
- 0.0.6
- 0.0.5
- 0.0.4
- 0.0.3
- 0.0.2
- 0.0.1
- dev-feature/cache-fix
- dev-feature/lesson-model-fields
- dev-feature/lara-stan
- dev-feature/SUD-240
- dev-feature/filtering-user-courses
- dev-reverting-race-conditions-changes
- dev-fix/race-condition-for-topic-progress
- dev-ArtKob-patch-1
This package is auto-updated.
Last update: 2024-09-10 07:45:28 UTC
README
课程和内容包
功能说明
此包用于为 EscolaLms 创建课程。
安装
composer require escolalms/courses
php artisan migrate
php artisan db:seed --class="EscolaLms\Courses\Database\Seeders\CoursesPermissionSeeder"
定时任务
- 定时任务在 ScheduleServiceProvider 中可用
$schedule->job(CheckForDeadlines::class)->hourly()
- 每小时执行一次$schedule->job(ActivateCourseJob::class)->daily()
- 每天执行一次
端点
测试
运行 ./vendor/bin/phpunit --filter 'EscolaLms\\Courses\\Tests'
以运行测试。请参阅 tests 文件夹,因为它是一个很好的文档附录起点。
事件
EscolaLms\Courses\Events\CourseAccessFinished
=> 当用户失去课程访问权限时触发事件。EscolaLms\Courses\Events\CourseAccessStarted
=> 当用户获得课程访问权限时触发事件。EscolaLms\Courses\Events\CourseAssigned
=> 当管理员分配访问用户时触发事件。EscolaLms\Courses\Events\CourseDeadlineSoon
=> 当课程截止日期临近时触发事件。EscolaLms\Courses\Events\CoursedPublished
=> 当课程发布时触发事件。EscolaLms\Courses\Events\CourseFinished
=> 当课程结束时触发事件。EscolaLms\Courses\Events\CourseStarted
=> 当课程开始时触发事件。EscolaLms\Courses\Events\CourseStatusChanged
=> 当课程状态发生变化时触发事件。EscolaLms\Courses\Events\CourseTutorAssigned
=> 当导师被分配到课程时触发事件。EscolaLms\Courses\Events\CourseTutorUnassigned
=> 当导师被从课程中移除时触发事件。EscolaLms\Courses\Events\CourseUnassigned
=> 当用户被从课程中移除时触发事件。EscolaLms\Courses\Events\TopicFinished
=> 当课程主题完成时触发事件。
权限
权限定义在 seeder
模型关系
模型用户必须扩展 HasCourses 类
class User extends EscolaLms\Core\Models\User
{
use HasCourses;
数据库关系
存在简单的关联。有关图示,请参阅 文档
Course
课程的一般类别Lesson
按课程分组Topic
按课程分组
Course 1 -> n Lesson
Lesson 1 -> n Topic
Topic 1 -> 1 TopicContent
TopicContent
是一个抽象模型,此包包含一些示例实现,例如 RichText
、Audio
、Video
、H5P
和 Image
您可以通过向相同的主题端点(创建和更新)发送 POST 请求来创建任何内容模型,请参阅 文档示例
注意,/api/topics
使用 form-data
,这是由于 PHP 上传文件的本性。
可能的 TopicContent
列表可在端点 /api/topics/types
获取
课程/教学大纲/计划
应用用户通过获取 GET /api/courses/{id}/program
端点访问课程。这在使用户购买或拥有其他课程访问权限后完成。该端点渲染了整个课程所需的课程、课程单元、主题及其内容的树形结构。
添加新的 TopicContent
类型
在 ServiceProvider 中注册您的类,例如
use Illuminate\Support\ServiceProvider; use EscolaLms\Courses\Facades\Topic; class CustomServiceProvider extends ServiceProvider { //... public function register() { Topic::registerContentClass(TopicContentCustom::class); // or Topic::registerContentClasses([TopicContentCustom::class, TopicAnotherContentCustom::class]); // also register JSON Resource for a type Topic::registerResourceClasses(Audio::class, [ 'client' => ClientAudioResource::class, 'admin' => AdminAudioResource::class, 'export' => ExportAudioResource::class, ]); } }
请参考 EscolaLmsCourseServiceProvider.php,以及 Models/TopicContent
内容
该软件包附带生成带有课程单元和主题的课程的数据填充器
php artisan db:seed --class="\EscolaLms\Courses\Database\Seeders\CoursesSeeder"