Sub-flow › Add External Link
Background: Content Editor (SCR-CCM.02) โ€” this dialog opens over the course editing page

Prototype โ€” simulate validation errors (AF 4A):

Spec notes

Identity

SUC-CCM-02 ยท Screen: SCR-CCM.20 (External Link Dialog)

ReturnUrl context

Current returnUrl: /author-course/
Fallback: / when returnUrl is empty.
Propagation: Save โ†’ returnUrl. Cancel โ†’ returnUrl + &sub_cancelled=1.

Sub-flow context

SUC-CCM-02 ยท Invoked by (Backoffice Portal): UC-CCM.01 (Author Course Content).
Precondition: A lesson Content Item is selected on SCR-CCM.02 with no content linked yet.
Success: External link resource created and linked to lesson โ€” Content Editor shows new item.
Cancel (AF 3A): no data saved; CourseDraftItem.course_draft_resource_id remains null.

Screen spec: SCR-CCM.20

  • Regions: Context Header ยท Link Form (URL, link title, description) ยท Footer Actions
  • link_url: required ยท max 2048 ยท format: url ยท protocol must be https:// or http:// (SS-CCM.28) ยท data_ref: CourseDraftResource.content_ref
  • link_title: required ยท max 255 ยท data_ref: CourseDraftResource.title
  • link_description: optional ยท max 1000 ยท data_ref: CourseDraftResource.description
  • Require completion tracking: optional ยท default off ยท when on, completion recorded automatically when learner advances to next item (SS-PLY.06) ยท data_ref: CourseDraftResource.is_tracked โ€” sourced from SUC main_flow step 2 / AR#3; not yet formalized as a field in the SCR-CCM.20 spec
  • Save enabled when link_url โ‰  "" && link_title โ‰  ""
  • AF 4A (Validation fails): inline error at failing field; return to step 2 to correct
  • AR#1: Protocol allowlist โ€” reject javascript:/data:/ftp:/etc. (SS-CCM.28). AR#2: Validation errors shown inline at the failing field
  • Open issues: OI-28 URL preview auto-fetch (server vs client) โ€” deferred to design phase. OI-29 URL reachability check / SSRF risk โ€” deferred to design phase