Lecture Builder (Research Portal)
The Lecture Builder lets researchers and staff author structured lectures inside the research portal. One underlying model serves three uses, selected by the lecture type:
| Type | Use |
|---|---|
| Curriculum | Teaching content that feeds the training curriculum (outline, sections, readings). |
| Talk | A public lecture/seminar record — speaker, affiliation, schedule, venue, duration, recording & slides URLs. |
| Standalone | A reusable authored lecture (ordered sections + media). |
Concepts
A lecture has:
- Core metadata: title, subtitle, summary, status.
- Talk metadata (optional): speaker name & affiliation, scheduled date/time, venue, duration in minutes, recording URL, slides URL.
- A
curriculum_reffree-text link to a training curriculum item. - Ordered content sections.
- A list of resources.
Sections
Each section has a heading, a Markdown body (rendered to safe HTML on save), an optional sort order, and optional media:
image,video,audio, orembed— provide a media URL and pick the type.
The Markdown renderer supports headings, bold, italic, inline code, links, unordered lists and blockquotes. All raw HTML in the source is stripped/escaped, so section bodies are XSS-safe.
Resources
Each resource is a labelled link with a type: reading, slides, video,
link, or file.
Status & publishing
A lecture moves through: draft → scheduled → delivered → published → archived.
The publish toggle is a shortcut that flips status between published and draft.
Screens
| Screen | Route | Purpose |
|---|---|---|
| Lecture list | /research/lectures |
Lectures grouped by type with quick "New" buttons. |
| Builder (new/edit) | /research/lectures/builder |
Create or edit lecture metadata. |
| Lecture view | /research/lectures/:id |
Sections, resources, status, publish/delete. |
| Section edit | /research/lectures/section/:id |
Edit one section. |
Data model
Three tables (InnoDB, utf8mb4):
research_lecture— one row per lecture (type,status, talk metadata).research_lecture_section— ordered sections (body_markdown,body_html,media_*,sort_order).research_lecture_resource— labelled resources (resource_type,url,sort_order).
Cross-subsystem references (e.g. the researcher table for ownership, or the
training curriculum) degrade gracefully if those tables are absent.
Notes
This is the PSIS/AtoM port of the Heratio ResearchLectureService /
ResearchLectureController, mirroring its data model and behaviour using AtoM
conventions (Laravel Query Builder via the Illuminate Capsule manager, Symfony 1.x
actions extending AhgController, and *Success.php templates).