Manage Course › Add Course from Catalog
๐ŸŽฌ 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 bar
  • filter_tags "Tag" โ€” enum multi-select ยท data_ref: Tag.id ยท Filter bar
  • result_count_label โ€” computed ยท read-only ยท Filter bar
  • course_type "Course Type" โ€” enum [self-paced, cohort] ยท data_ref: Course.course_type ยท read-only per row
  • pricing_type "Pricing Type" โ€” enum [free, paid] ยท data_ref: Course.access_mode ยท read-only per row
  • tags "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 dialog
  • search "Search" โ€” always enabled
  • open_course_detail "(click row)" โ€” per row ยท triggers UC-LMS.11-M-2 (existing course edit, not this UC)
Additional requirements (UC-LMS.18)
  1. 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]
  2. The User may add only one Course per flow execution (single selection per flow)
  3. 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 bar
  • filter_institution "Institution" โ€” enum ยท default "all" ยท Filter bar
  • course_title "Course Name" โ€” data_ref: Course.title ยท read-only ยท Course table
  • institution_name "Institution" โ€” computed from Course.institution_id โ†’ Institution.name ยท read-only
  • course_version_label "Version" โ€” computed "v{major}.{minor}" ยท read-only
  • approved_date "Approved Date" โ€” date ยท data_ref: CoursePublishRequest.closed_at ยท read-only
  • already_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-2
  • select_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
  1. Only courses with is_shared = true shown in "Shared by Others" โ€” server-side filter
  2. Table groups: "My Institution" (sorted by approved_date desc) and "Shared by Others"; hide empty group separator
  3. Empty state (see UC-LMS.18 additional requirement #5): show message + link to Course Authoring (UC-CCM.05)