Skip to content

feat/course-details-page - #250

Closed
pns-opswerks wants to merge 14 commits into
overhangio:releasefrom
opswerks-swg:feat/course-details-page
Closed

pns-opswerks wants to merge 14 commits into
overhangio:releasefrom
opswerks-swg:feat/course-details-page

Conversation

@pns-opswerks

Copy link
Copy Markdown

Summary

The course about page (/courses/<id>/about) now uses the Course Details layout from Figma 92:4016, covering LMS 9 (Course Detail Page): course metadata, rating, due-date status and enrollment actions in one view. Enrollment still uses the standard Open edX flow and disabled states, so only the look changes. When the course_assignments app is installed, the page reads provider, content type, duration and the learner's due date from it, with Overdue / Due Soon badges that match the learner dashboard's 7-day window.

Related Ticket / Issue

LMS 9 - Course Details Page:

Type of Change

  • Bug fix
  • Feature
  • Refactor
  • Documentation
  • Chore / Maintenance

What Changed?

  • course_about.html is rebuilt as the Course Details layout: back link, title/rating/published/provider meta, duration and due-date stats, tags, the confidentiality note, hero banner (opens the course video when there is one), status row, CTAs, Description, Objectives, Course Outline and Related Courses.
  • Enroll CTAs keep the stock Open edX behavior: View Course, Enroll and Start, and the disabled states for full, invitation-only, closed and already enrolled. The hidden enroll form and AJAX handler are unchanged.
  • The description falls back from short_description to overview (sanitized with clean_dangerous_html) to default copy.
  • The optional course_assignments integration reads CourseExtraInfo (provider, content type, duration) and the learner's CourseAssignment due date. "Overdue" comes from is_overdue; "Due Soon" only shows within 7 days and never for completed assignments, the same window as DUE_SOON_WINDOW_DAYS in the learner dashboard.
  • courseware/_about.scss holds all the Course Details styles, with Google Sans Flex across the page (a scoped rule overrides the global Rockford !important), $cd-* variables, $primary for the main CTA, a responsive related-courses grid and dark-mode overrides.
  • Google Sans Flex loads through a <link> in headextra, using the same URL as notifications.js so the browser only fetches it once.
  • The old about-page header styles are gone from _extras.scss, and course_about_sidebar_header.html is now a comment-only stub, since the design has no social sidebar.
  • New icons and mock related-course art are added under static/images/course-about/.

How Was This Tested?

  • Unit tests
  • Integration tests
  • Manual testing
  • Not tested, explanation below:

Testing notes (optional):
Ran just theme-scss (compiles and collectstatic cleanly) and loaded https://local.openedx.io/courses/course-v1:Opswerks+NODE201+2017_T1/about (200). Checked that every image under images/course-about/ and the no_course_image.png fallback return 200. Checked the Due Soon logic against a real NODE201 assignment: in progress, due in 19 days, so no badge. The ship gate passes.

Screenshots / Recordings

Kindly check this card https://app.clickup.com/t/9016295640/PROJ-3515 (I'm unable to attach the demo here - 10mb limit)

Checklist

  • Code follows project standards
  • Tests were added or updated (or not applicable)
  • Documentation was updated if needed
  • No secrets, credentials, or sensitive data were committed
  • I reviewed my own changes before requesting review

Notes for Reviewers

This is a theme-only PR against release: no backend, OpenLMS parent or MFE changes. course_assignments is optional; without it the page shows placeholders instead of provider, duration and due-date data. Course Outline, Related Courses (disabled CTAs), the rating and the "EASY" / "UI DESIGN" tags are intentional mocks until the backing APIs exist. Google Sans Flex comes from fonts.googleapis.com. After pulling, run just theme to see the changes locally.

jeffrey-ramirez and others added 14 commits June 19, 2026 14:18
Co-authored-by: Paul Nathaniel Sango <paulnathanielsango@192.168.1.4>
Release tip lacked these pages; required for HEADER_NAV_LINKS Library/History routes.

Co-authored-by: Paul Nathaniel Sango <paulnathanielsango@192.168.1.4>
* feat: apply OpenLMS branding and design system customizations

* feat: apply OpenLMS branding logos and favicon

* Added custom header

* Added patches

* Updated branding colors

* Modified footer background

* Modified branding

* Modified branding

* Update theme branding assets (fonts, colors, logos) for learner dashboard landing page

* Removed header and footer

---------

Co-authored-by: Jeffrey Ramirez <ja.ramirez@opswerks.com>
* feat: apply OpenLMS branding and design system customizations

* feat: apply OpenLMS branding logos and favicon

* Added custom header

* Added patches

* Updated branding colors

* Modified footer background

* Modified branding

* Modified branding

* Update theme branding assets (fonts, colors, logos) for learner dashboard landing page

* Removed header and footer

* Added primary light

---------

Co-authored-by: Jeffrey Ramirez <ja.ramirez@opswerks.com>
History is served at apps.local.openedx.io/history/ by frontend-app-history.
Drop static_templates/history.html so local.openedx.io/history does not compete with the MFE route.

Co-authored-by: Paul Nathaniel Sango <paulnathanielsango@192.168.1.2>
* feat: route catalog search to Search MFE
Redirect /courses discovery queries to SEARCH_CATALOG_URL and wire
the LMS navbar search input to the apps Search MFE URL.

* fix: use slashless search URL fallback

---------

Co-authored-by: Paul Nathaniel Sango <paulnathanielsango@192.168.1.7>
Co-authored-by: Paul Nathaniel Sango <paulnathanielsango@192.168.1.8>
Add vanilla JS drawer behavior, navbar bell markup, and SCSS that match
frontend-plugin-notifications so classic LMS pages get the same v1 drawer.

Co-authored-by: Paul Nathaniel Sango <paulnathanielsango@192.168.1.8>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Pending Triage

Development

Successfully merging this pull request may close these issues.

2 participants