Manage Course › Course List
🎬 Simulate:

Manage Course

Manage free tags, course sharing, and grading settings for courses in your institution

SCR-LMS.03 · UC-LMS.11
5 courses
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 Click a course to manage Free Tags

Screen Flow (from flow.puml):

→ Select Course → Course Admin Detail
📝 Spec notes — UC-LMS.11 / SCR-LMS.03 (fields, actions, requirements)
Identity
  • Screen: SCR-LMS.03 — Course List
  • Use case: UC-LMS.11 — Manage Course
Brief description

Admin course list page showing only published courses. Program Admin sees only courses within their institution's scope. Super Admin sees all institutions. Click on a course row to open the Course Admin Detail page (SCR-LMS.06).

Fields
  • search_query "Course Search" — text · max 200 chars · not required · free-text search on course title
  • filter_tags "Tag" — enum multi-select · data_ref: Tag.id · not required · default: []
  • result_count_label "Result Count" — computed · read-only · always visible
  • course_type "Course Type" — enum [self-paced, cohort] · data_ref: Course.course_type · fallback "Not Set" · read-only (per row)
  • pricing_type "Pricing Type" — enum [free, paid] · data_ref: Course.access_mode · fallback "Not Set" · read-only (per row)
  • tags "Tag" — tags · data_ref: Tag.name · fallback [] · read-only (per row)
Actions
  • search "Search" — always enabled · filters course list by title
  • open_course_detail "(click row)" — per row · navigate to SCR-LMS.06 · triggers UC-LMS.11-M-2
Additional requirements
  1. Visibility scope — Program Admin sees only courses in their institution; Super Admin sees all institutions; enforce server-side [refs: NFR-10]
  2. Table columns: Course Name, Course Type (course_type), Pricing Type (access_mode), Tag (chips for multiple tags; "—" if none), Owner (CourseInstructor.role=owner), Last Updated; add Institution column for Super Admin only; do not show Status column
  3. Navigation — click any course row to open SCR-LMS.06; no Edit/Delete/Create buttons on this page
  4. Empty state — display message + link to course review page when no published courses are found or search returns no results
  5. Success notification — when returning from SCR-LMS.06 after saving Free Tags successfully, show alert + refresh Tags column (UC-LMS.11 step 8)
⚠ Open issues (UC-LMS.11)
  • The scope enforcement rule "Program Admin sees only Courses in their institution" is a cross-module pattern reused in UC-CCM.06, UC-LMS.01, UC-LMS.02, UC-LMS.03, and Analytics UCs — decide whether to create SS-02 or inline in each UC
↳ Embedded dialog: SCR-LMS.51 — Course Catalog Picker

Opens when: "New Course" button is clicked (action new_course — triggers UC-LMS.18)

Fields
  • search_query "Course Name Search" — text · max 200 chars · Filter bar
  • filter_institution "Institution" — enum · default "all" · dynamic options (my institution + shared others) · Filter bar
  • course_title "Course Title" — text · data_ref: Course.title · read-only · Course table
  • institution_name "Institution" — computed from Course.institution_id → Institution.name · read-only · Course table
  • course_version_label "Version" — computed "v{major}.{minor}" from CourseVersion · read-only
  • approved_date "Approved Date" — date · data_ref: CoursePublishRequest.closed_at (status=approved) · read-only
  • already_added_indicator "Status" — boolean · computed (course_id exists in InstitutionCourse) · row disabled + "Already Added" badge when true
Actions
  • search "Search" — always enabled · triggers UC-LMS.18-M-2
  • select_course "(click course row)" — enabled when already_added_indicator == false · triggers UC-LMS.18-M-3 → closes dialog + opens SCR-LMS.06 in "Add from Catalog" mode
  • cancel "Cancel" — data-bs-dismiss="modal" · triggers UC-LMS.18-A-4A-1
Additional requirements
  1. Rows where already_added_indicator == true show badge "Already Added" and are disabled; enforce server-side too (AF 3A)
  2. Only courses with is_shared = true appear in "Shared by Others" group — server-side filter
  3. Table has 2 group rows: "My Institution" (sorted by approved_date desc) and "Shared by Others" (sorted by institution name then approved_date); hide empty group separator
  4. Empty state (AF 1A): no courses available → show "No courses available to add" + link to Course Authoring
  5. Pagination: if rows per institution exceed 50, use pagination (25 rows/page)