From f39a50e7dcdb292590d8b20b7cdf4f96d8f4c0d9 Mon Sep 17 00:00:00 2001
From: Kristin Aoki <42981026+KristinAoki@users.noreply.github.com>
Date: Tue, 18 Mar 2025 16:51:16 -0400
Subject: [PATCH] feat: add section outline plugin (#1632)
This PR adds a plugin slot for the section list in the outline tab. This plugin can be used to add custom content before the list or add extra content to the titles for sections and subsections. To accomplish this, some of the smaller components inside Section and SequenceLink have been extrapolated into their own components so that they can be easily imported for use in plugins.
---
src/course-home/outline-tab/OutlineTab.jsx | 20 +--
.../outline-tab/OutlineTab.test.jsx | 6 +-
src/course-home/outline-tab/Section.jsx | 137 ----------------
src/course-home/outline-tab/SequenceLink.jsx | 147 ------------------
src/course-home/outline-tab/messages.ts | 10 ++
.../section-outline/HiddenSequenceLink.tsx | 25 +++
.../outline-tab/section-outline/Section.tsx | 94 +++++++++++
.../section-outline/SectionTitle.tsx | 59 +++++++
.../section-outline/SequenceDueDate.tsx | 60 +++++++
.../section-outline/SequenceLink.tsx | 56 +++++++
.../section-outline/SequenceTitle.tsx | 63 ++++++++
.../CourseHomeSectionOutlineSlot/README.md | 56 +++++++
.../CourseHomeSectionOutlineSlot/index.tsx | 31 ++++
.../screenshot_custom.png | Bin 0 -> 132777 bytes
.../screenshot_default.png | Bin 0 -> 102490 bytes
15 files changed, 464 insertions(+), 300 deletions(-)
delete mode 100644 src/course-home/outline-tab/Section.jsx
delete mode 100644 src/course-home/outline-tab/SequenceLink.jsx
create mode 100644 src/course-home/outline-tab/section-outline/HiddenSequenceLink.tsx
create mode 100644 src/course-home/outline-tab/section-outline/Section.tsx
create mode 100644 src/course-home/outline-tab/section-outline/SectionTitle.tsx
create mode 100644 src/course-home/outline-tab/section-outline/SequenceDueDate.tsx
create mode 100644 src/course-home/outline-tab/section-outline/SequenceLink.tsx
create mode 100644 src/course-home/outline-tab/section-outline/SequenceTitle.tsx
create mode 100644 src/plugin-slots/CourseHomeSectionOutlineSlot/README.md
create mode 100644 src/plugin-slots/CourseHomeSectionOutlineSlot/index.tsx
create mode 100644 src/plugin-slots/CourseHomeSectionOutlineSlot/screenshot_custom.png
create mode 100644 src/plugin-slots/CourseHomeSectionOutlineSlot/screenshot_default.png
diff --git a/src/course-home/outline-tab/OutlineTab.jsx b/src/course-home/outline-tab/OutlineTab.jsx
index 3fddf35a..5caeeefa 100644
--- a/src/course-home/outline-tab/OutlineTab.jsx
+++ b/src/course-home/outline-tab/OutlineTab.jsx
@@ -15,7 +15,6 @@ import WeeklyLearningGoalCard from './widgets/WeeklyLearningGoalCard';
import CourseTools from './widgets/CourseTools';
import { fetchOutlineTab } from '../data';
import messages from './messages';
-import Section from './Section';
import ShiftDatesAlert from '../suggested-schedule-messaging/ShiftDatesAlert';
import UpgradeNotification from '../../generic/upgrade-notification/UpgradeNotification';
import UpgradeToShiftDatesAlert from '../suggested-schedule-messaging/UpgradeToShiftDatesAlert';
@@ -28,6 +27,7 @@ import { useModel } from '../../generic/model-store';
import WelcomeMessage from './widgets/WelcomeMessage';
import ProctoringInfoPanel from './widgets/ProctoringInfoPanel';
import AccountActivationAlert from '../../alerts/logistration-alert/AccountActivationAlert';
+import CourseHomeSectionOutlineSlot from '../../plugin-slots/CourseHomeSectionOutlineSlot';
const OutlineTab = () => {
const intl = useIntl();
@@ -165,24 +165,18 @@ const OutlineTab = () => {
Gi;#(>97W
zmAw+g@9?#sj)Hx68#d{$s+OC4zc `9*#9K%NgaA`n9M1r*_%
zs&?eL%8{o+$U6a6*1Cwf44CpX(9x4Ob{tB!wipfBGtpGzO(iHvfYZ8d5w&B@Hu&0Dz^
zdd*?vKFn
DmxlSs~dC&zd~24R@3ckQxS7EndaW`v#7S7_De3`KdbwE
zrKxw$aI)lD>9VhF6ySS^T||qYFX9INvX^&6u-~|c)vVQM?)2*(txs_oUT_b#=E3ep
z7mRie85nM6l_ljS=Yk!Zt?X!jke@9Y2$v!~Pw
-&Z3WZ6CN4an_nkw^8@T
zd?D$2hA^8d>JlUaHgup8-;lB2ZcS-@|w9`kT
zk8r+G=zLq~=Jn01Y3n;t65M
cc7!#pk{#G?%{jmmrKXsF2K%|;{$6S-t
zp