Introduction to Python Programming
| Name | Role | Joined | Actions | |
|---|---|---|---|---|
| Apinya Srisuk You | apinya.srisuk@tvet.th | Owner | 2026-04-01 | |
| Khamla Bouasone | khamla.bouasone@tvet.th | Co-Author | 2026-05-10 | |
| Nantawan Prapakorn | nantawan.prapakorn@tvet.th | Co-Author | 2026-05-18 |
Screen Flow (UC-CCM.09):
๐ Spec notes โ UC-CCM.09 / SCR-CCM.18 (fields, actions, requirements)
- Screen: SCR-CCM.18 โ Manage Co-Authors Panel
- Use case: UC-CCM.09 โ Manage Co-Authors
Tab panel content of SCR-CCM.02 under the "Co-Authors" tab โ authors table (name, email, role, joined date) + "Add Co-Author" button (opens SCR-CCM.22) + "Remove" button per row (opens SCR-CCM.23). Course context (name / status) comes from the course header bar of SCR-CCM.02. Rendered here as this UC's own routable entry page so the flow can be walked independently in the prototype.
col_author_name"Name" โ text ยท always visible ยท read-onlycol_author_email"Email" โ text ยท always visible ยท read-onlycol_author_role"Role" โ enum (owner / co-author) ยท always visible ยท read-onlycol_author_joined_at"Joined date" โ date ยท always visible ยท read-only
add_co_author"Add Co-Author" โ enabled when current_user_role == owner ยท triggers UC-CCM.09-M-2 ยท opens SCR-CCM.22remove_co_author"Remove" โ enabled when current_user_role == owner ยท triggers UC-CCM.09-A-2A-1 ยท opens SCR-CCM.23
- "Add Co-Author" and "Remove" buttons are visible only when the session user is the owner โ co-authors can only view the member list (read-only)
- An owner may not invite themselves, nor invite someone already a member of this course team
- A person may only be invited if they are an instructor with an activated account (UC-IDP.03) โ learner-only accounts cannot be invited
- Role-based permissions: owner = edit content, submit for publication, manage team, delete course; co-author = edit content only [refs: SS-02]
Owner view (rendered here): "Add Co-Author" button and every row's "Remove" button are visible/enabled.
Co-author (non-owner) view: same member list, but the "Add Co-Author" button and all "Remove" buttons are hidden โ read-only.
โณ Embedded dialog: SCR-CCM.22 โ Add Co-Author Dialog
instructor"Add instructor" โ autocomplete, required ยท min 1 character to searchrole"Role" โ enum {co-author (default), owner} ยท required
confirm"Confirm" โ enabled when instructor != null ยท triggers UC-CCM.09-M-6 ยท saves immediately when role = co-author, or role = owner with no existing ownerconfirm_additional_owner"Confirm (add additional owner)" โ enabled when instructor != null && role == owner ยท triggers UC-CCM.09-A-6A-2 ยท replaces actionconfirmwhen the Owner warning is showncancel"Cancel" โ always enabled ยท closes dialog without saving, returns to SCR-CCM.18
- Autocomplete shows only active instructors not already on the team, excluding the session user; each suggestion shows full name (primary) and email (secondary)
- Autocomplete shows at most 10 suggestions per query
- Owner warning region shown when role = owner and the course already has an owner: "This course already has an owner. Do you want to add another owner?" โ action
confirmis replaced byconfirm_additional_ownerin this state
โณ Embedded dialog: SCR-CCM.23 โ Remove Co-Author Confirmation Dialog
member_name"Name" โ text ยท read-only, from selected rowmember_email"Email" โ text ยท read-only, from selected rowmember_role"Role" โ enum (owner / co-author) ยท read-only, from selected rowis_last_ownerโ computed server-side when the dialog opens; visible when member_role == owner ยท read-only
confirm"Confirm" โ enabled when is_last_owner == false ยท triggers UC-CCM.09-A-2A-3cancel"Cancel" โ always enabled ยท closes dialog without saving, returns to SCR-CCM.18
is_last_owneris computed server-side when the dialog opens by checking whether this member is the only remaining owner of the course; if true the Last-owner warning shows "Cannot remove โ this member is the sole owner of the course. Please add another owner first." and Confirm is disabled