๐ฌ Simulate:
Add Course from Catalog
Select an approved course to add to your institution's program
5 courses in your program
| Course Name | Course Type | Pricing Type | Tag | Owner | Last Updated |
|---|---|---|---|---|---|
|
P
Introduction to Python Programming
|
Not Set | Free |
Python
Programming
|
S
Inst. Somchai Jaidee
|
21 May 2026 |
|
W
Web Development Fundamentals
|
Self-paced | Paid |
Web Development
TVET
|
S
Inst. Sumalee Rakrian
|
20 May 2026 |
|
D
Data Science for Beginners
|
Cohort | — |
Data Science
|
P
Inst. Prasert Doenthang
|
19 May 2026 |
|
C
Cybersecurity Basics
|
Self-paced | Paid |
Cybersecurity
|
P
Inst. Piya Srisard
|
15 May 2026 |
|
C
Cloud Computing Essentials
|
Not Set | — | โ |
S
Inst. Siriporn Mangmee
|
10 May 2026 |
Showing 5 items
Screen Flow (from flow.puml):
๐ Spec notes โ UC-LMS.18 / SCR-LMS.03 (fields, actions, requirements)
Identity
- Screen: SCR-LMS.03 โ Course List (entry for UC-LMS.18)
- Use case: UC-LMS.18 โ Add Course from Catalog
Brief description
UC-LMS.18 entry point โ the User lands on Course List (SCR-LMS.03) and clicks "New Course" to open Course Catalog Picker dialog (SCR-LMS.51) and select a course to add. This page is the same screen as UC-LMS.11 entry but in the "Add from Catalog" flow context.
Fields (SCR-LMS.03)
search_query"Search Courses" โ text ยท max 200 chars ยท Filter barfilter_tags"Tag" โ enum multi-select ยท data_ref: Tag.id ยท Filter barresult_count_labelโ computed ยท read-only ยท Filter barcourse_type"Course Type" โ enum [self-paced, cohort] ยท data_ref: Course.course_type ยท read-only per rowpricing_type"Pricing Type" โ enum [free, paid] ยท data_ref: Course.access_mode ยท read-only per rowtags"Tag" โ tags ยท data_ref: Tag.name ยท read-only per row
Actions (SCR-LMS.03)
new_course"New Course" โ always enabled ยท triggers UC-LMS.18-M-1 โ opens SCR-LMS.51 dialogsearch"Search" โ always enabledopen_course_detail"(click row)" โ per row ยท triggers UC-LMS.11-M-2 (existing course edit, not this UC)
Additional requirements (UC-LMS.18)
- The User may only add Courses shared by other institutions โ enforced by the system; the shared setting is configured by that institution's own User via the Course Settings tab in UC-LMS.11 [refs: UC-LMS.11]
- The User may add only one Course per flow execution (single selection per flow)
- When no Courses are available for selection, the picker displays an empty state directing the User to submit a new Course for approval [refs: UC-CCM.05]
โ Open issues (UC-LMS.18)
- InstitutionCourse is a new entity not yet in entities.puml โ decide: soft-link (deletable) or hard-link (non-deletable if Enrollments exist)
- Public sharing toggle (is_shared) not yet modeled in CCM โ decide: flag on Course entity, CoursePublishRequest, or new CourseSharingPolicy entity
- Course from another institution that is later unpublished/retired after being added โ no behavior defined yet
- Tab 4 Manage Course Instructor: disabled until Add succeeds โ decide: hide whole Tab or show but lock functions
โณ Embedded dialog: SCR-LMS.51 โ Course Catalog Picker
Opens when: "New Course" button clicked (triggers UC-LMS.18-M-1)
Fields
search_query"Search Course Name" โ text ยท max 200 chars ยท Filter barfilter_institution"Institution" โ enum ยท default "all" ยท Filter barcourse_title"Course Name" โ data_ref: Course.title ยท read-only ยท Course tableinstitution_name"Institution" โ computed from Course.institution_id โ Institution.name ยท read-onlycourse_version_label"Version" โ computed "v{major}.{minor}" ยท read-onlyapproved_date"Approved Date" โ date ยท data_ref: CoursePublishRequest.closed_at ยท read-onlyalready_added_indicator"Status" โ computed boolean ยท shows "Already Added" badge when true; row stays clickable for re-selection
Actions
search"Search" โ always enabled ยท triggers UC-LMS.18-M-2select_course"(Click Course row)" โ always enabled (already-added rows remain clickable to re-select) ยท closes dialog + opens SCR-LMS.06 in Add mode (UC-LMS.18-M-3 โ M-4)cancel"Cancel" โ triggers UC-LMS.18-AF-4A โ closes dialog, navigates ?scenario=AF-4A
Additional requirements
- Only courses with is_shared = true shown in "Shared by Others" โ server-side filter
- Table groups: "My Institution" (sorted by approved_date desc) and "Shared by Others"; hide empty group separator
- Empty state (see UC-LMS.18 additional requirement #5): show message + link to Course Authoring (UC-CCM.05)